[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