[Bf-blender-cvs] [857a403] particles_refactor: Updated read/write code for paged buffer for the new layer/page structure.

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


Commit: 857a403cd25803d7bf2872cf92ad4b33a44fc2dd
Author: Lukas Tönne
Date:   Tue Jun 4 16:19:25 2013 +0200
https://developer.blender.org/rB857a403cd25803d7bf2872cf92ad4b33a44fc2dd

Updated read/write code for paged buffer for the new layer/page structure.

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

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 ca67d8d..78f13d0 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4245,25 +4245,15 @@ static void direct_link_latt(FileData *fd, Lattice *lt)
 
 static void direct_link_pagedbuffer(FileData *fd, bPagedBuffer *pbuf)
 {
-#if 0
-	bPagedBufferPage *page;
-	bPagedBufferLayerInfo *layer;
-	int p, k;
+	bPagedBufferLayer *layer;
+	int p;
 	
 	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]);
-		}
+	for (layer = pbuf->layers.first; layer; layer = layer->next) {
+		layer->pages = newdataadr(fd, layer->pages);
+		for (p = 0; p < layer->totpages; ++p)
+			layer->pages[p].data = newdataadr(fd, layer->pages[p].data);
 	}
-#endif
 }
 
 
@@ -4841,6 +4831,8 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
 		}
 		else if (md->type == eModifierType_NParticleSystem) {
 			NParticleSystemModifierData *pmd = (NParticleSystemModifierData *)md;
+			
+			pmd->buffer = newdataadr(fd, pmd->buffer);
 			direct_link_nparticle_buffer(fd, pmd->buffer);
 		}
 		else if (md->type == eModifierType_LaplacianDeform) {
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index e2454e4..d28037e 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1361,31 +1361,25 @@ static void write_defgroups(WriteData *wd, ListBase *defbase)
 
 static void write_pagedbuffer(WriteData *wd, bPagedBuffer *pbuf)
 {
-#if 0
-	bPagedBufferLayerInfo *layer;
-	bPagedBufferPage *page;
+	bPagedBufferLayer *layer;
 	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]);
+	for (layer = pbuf->layers.first; layer; layer = layer->next) {
+		writestruct(wd, DATA, "bPagedBufferLayer", 1, layer);
+		
+		if (layer->pages) {
+			writestruct(wd, DATA, "bPagedBufferPage", layer->totpages, layer->pages);
+			
+			for (p = 0; p < layer->totpages; ++p)
+				writedata(wd, DATA, pbuf->page_bytes, layer->pages[p].data);
 		}
 	}
-#endif
 }
 
 static void write_nparticle_buffer(WriteData *wd, NParticleBuffer *buffer)
 {
+	writestruct(wd, DATA, "NParticleBuffer", 1, buffer);
+	
 	write_pagedbuffer(wd, &buffer->data);
 }




More information about the Bf-blender-cvs mailing list