[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