[Bf-blender-cvs] [a73d384] soc-2016-layer_manager: Cleanup layer writing code
Julian Eisel
noreply at git.blender.org
Mon Jul 11 19:05:29 CEST 2016
Commit: a73d3844d135191ac2b2a33b7a77d0a47f2917d6
Author: Julian Eisel
Date: Mon Jul 11 19:02:18 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rBa73d3844d135191ac2b2a33b7a77d0a47f2917d6
Cleanup layer writing code
===================================================================
M source/blender/blenloader/intern/writefile.c
===================================================================
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 9098002..b97dc99 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2629,10 +2629,15 @@ static void write_paint(WriteData *wd, Paint *p)
/**
* \note Recursive.
*/
-static void write_layeritems(WriteData *wd, Scene *scene, ListBase *layeritems)
+static void write_layertree(WriteData *wd, LayerTree *ltree, ListBase *layeritems)
{
+ writestruct(wd, DATA, LayerTree, 1, ltree);
+
+ /* write item array */
+ writedata(wd, DATA, sizeof(LayerTreeItem *) * ltree->tot_items, ltree->items_all);
+
for (LayerTreeItem *litem = layeritems->first; litem; litem = litem->next) {
- if (scene->object_layers->type == LAYER_TREETYPE_OBJECT && litem->type->type == LAYER_ITEMTYPE_LAYER) {
+ if (ltree->type == LAYER_TREETYPE_OBJECT && litem->type->type == LAYER_ITEMTYPE_LAYER) {
LayerTypeObject *oblayer = (LayerTypeObject *)litem;
writestruct(wd, DATA, LayerTypeObject, 1, oblayer);
writedata(wd, DATA, sizeof(*oblayer->bases) * oblayer->tot_bases, oblayer->bases);
@@ -2643,8 +2648,8 @@ static void write_layeritems(WriteData *wd, Scene *scene, ListBase *layeritems)
if (litem->prop) {
IDP_WriteProperty(litem->prop, wd);
}
- litem->tree = scene->object_layers;
- write_layeritems(wd, scene, &litem->childs);
+ litem->tree = ltree;
+ write_layertree(wd, ltree, &litem->childs);
}
}
#endif
@@ -2852,9 +2857,7 @@ static void write_scenes(WriteData *wd, ListBase *scebase)
#ifdef WITH_ADVANCED_LAYERS
if (sce->object_layers) {
- writestruct(wd, DATA, LayerTree, 1, sce->object_layers);
- writedata(wd, DATA, sizeof(LayerTreeItem *) * sce->object_layers->tot_items, sce->object_layers->items_all);
- write_layeritems(wd, sce, &sce->object_layers->items);
+ write_layertree(wd, sce->object_layers, &sce->object_layers->items);
}
#endif
More information about the Bf-blender-cvs
mailing list