[Bf-blender-cvs] [982c74e] particles_refactor: Added basic read/write functions for pagedbuffer.

Lukas Tönne noreply at git.blender.org
Tue Apr 22 12:05:09 CEST 2014


Commit: 982c74edf0f7388e4773410c4325617378399197
Author: Lukas Tönne
Date:   Thu May 23 11:26:41 2013 +0200
https://developer.blender.org/rB982c74edf0f7388e4773410c4325617378399197

Added basic read/write functions for pagedbuffer.

===================================================================

M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c

===================================================================

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 13827f8..fb95894 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -82,6 +82,7 @@
 #include "DNA_object_fluidsim.h" // NT
 #include "DNA_object_types.h"
 #include "DNA_packedFile_types.h"
+#include "DNA_pagedbuffer_types.h"
 #include "DNA_particle_types.h"
 #include "DNA_property_types.h"
 #include "DNA_rigidbody_types.h"
@@ -4239,6 +4240,30 @@ static void direct_link_latt(FileData *fd, Lattice *lt)
 }
 
 
+/* ************ READ PAGED BUFFER ***************** */
+
+static void direct_link_pagedbuffer(FileData *fd, bPagedBuffer *pbuf)
+{
+	bPagedBufferPage *page;
+	bPagedBufferLayerInfo *layer;
+	int p, k;
+	
+	link_list(fd, &pbuf->layers);
+	for (layer=pbuf->layers.first; layer; layer=layer->next) {
+		layer->default_value = newdataadr(fd, layer->default_value);
+	}
+	
+	pbuf->pages = newdataadr(fd, pbuf->pages);
+	for (p=0, page=pbuf->pages; p < pbuf->totpages; ++p, ++page) {
+		if (page->layers) {
+			page->layers = newdataadr(fd, page->layers);
+			for (k=0; k < pbuf->totlayers; ++k)
+				page->layers[k] = newdataadr(fd, page->layers[k]);
+		}
+	}
+}
+
+
 /* ************ READ OBJECT ***************** */
 
 static void lib_link_modifiers__linkModifiers(void *userData, Object *ob,
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index ffd1d6d..5d42305 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -119,6 +119,7 @@
 #include "DNA_node_types.h"
 #include "DNA_object_types.h"
 #include "DNA_object_force.h"
+#include "DNA_pagedbuffer_types.h"
 #include "DNA_packedFile_types.h"
 #include "DNA_particle_types.h"
 #include "DNA_property_types.h"
@@ -145,6 +146,7 @@
 #include "BLI_blenlib.h"
 #include "BLI_linklist.h"
 #include "BLI_math.h"
+#include "BLI_pagedbuffer.h"
 #include "BLI_mempool.h"
 
 #include "BKE_action.h"
@@ -1356,6 +1358,29 @@ static void write_defgroups(WriteData *wd, ListBase *defbase)
 		writestruct(wd, DATA, "bDeformGroup", 1, defgroup);
 }
 
+static void write_pagedbuffer(WriteData *wd, bPagedBuffer *pbuf)
+{
+	bPagedBufferLayerInfo *layer;
+	bPagedBufferPage *page;
+	int p;
+	
+	for (layer=pbuf->layers.first; layer; layer=layer->next) {
+		writestruct(wd, DATA, "bPagedBufferLayerInfo", 1, layer);
+		writedata(wd, DATA, layer->stride, layer->default_value);
+	}
+	
+	/* write page structs */
+	writestruct(wd, DATA, "bPagedBufferPage", pbuf->totpages, pbuf->pages);
+	/* write page data */
+	for (p=0, page=pbuf->pages; p < pbuf->totpages; ++p, ++page) {
+		if (page->layers) {
+			writedata(wd, DATA, pbuf->totlayers * sizeof(void*), page->layers);
+			for (layer=pbuf->layers.first; layer; layer=layer->next)
+				writedata(wd, DATA, pbuf->page_size * layer->stride, page->layers[layer->layer]);
+		}
+	}
+}
+
 static void write_modifiers(WriteData *wd, ListBase *modbase)
 {
 	ModifierData *md;




More information about the Bf-blender-cvs mailing list