[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