[Bf-blender-cvs] [866b326] render-layers: Fix write of nested LayerCollections (and DNA cleanup)

Dalai Felinto noreply at git.blender.org
Tue Dec 6 16:37:19 CET 2016


Commit: 866b3268a5e8d07c6b44d75817b5a267e8d1ef73
Author: Dalai Felinto
Date:   Tue Dec 6 16:20:36 2016 +0100
Branches: render-layers
https://developer.blender.org/rB866b3268a5e8d07c6b44d75817b5a267e8d1ef73

Fix write of nested LayerCollections (and DNA cleanup)

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

M	source/blender/blenloader/intern/readfile.c
M	source/blender/makesdna/DNA_layer_types.h

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 4e9b74f..3313245 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5523,6 +5523,7 @@ static void direct_link_layer_collections(FileData *fd, ListBase *lb)
 {
 	link_list(fd, lb);
 	for (LayerCollection *lc = lb->first; lc; lc = lc->next) {
+		lc->scene_collection = newdataadr(fd, lc->scene_collection);
 		link_list(fd, &lc->overrides);
 		link_list(fd, &lc->object_bases);
 
diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h
index 2d8406e..b07f9f6 100644
--- a/source/blender/makesdna/DNA_layer_types.h
+++ b/source/blender/makesdna/DNA_layer_types.h
@@ -52,20 +52,11 @@ typedef struct LayerCollection {
 	struct SceneCollection *scene_collection;
 	short flag;
 	short pad[3];
-	ListBase layer_collections;   /* synced with collection->collections */
-	ListBase object_bases;  /* (ObjectBase *)LinkData->data - synced with collection->objects and collection->filter_objects */
+	ListBase layer_collections; /* synced with collection->collections */
+	ListBase object_bases;      /* (ObjectBase *)LinkData->data - synced with collection->objects and collection->filter_objects */
 	ListBase overrides;
 } LayerCollection;
 
-typedef struct SceneCollection {
-	struct SceneCollection *next, *prev;
-	char name[64]; /* MAX_NAME */
-	char filter[64]; /* MAX_NAME */
-	ListBase scene_collections;     /* nested collections */
-	ListBase objects;         /* (Object *)LinkData->data */
-	ListBase filter_objects;  /* (Object *)LinkData->data */
-} SceneCollection;
-
 typedef struct SceneLayer {
 	struct SceneLayer *next, *prev;
 	char name[64]; /* MAX_NAME */
@@ -73,10 +64,19 @@ typedef struct SceneLayer {
 	short active_collection;
 	short pad[3];
 	struct ObjectBase *basact;
-	ListBase layer_collections;
-	ListBase object_bases; /* ObjectBase */
+	ListBase layer_collections; /* LayerCollection */
+	ListBase object_bases;      /* ObjectBase */
 } SceneLayer;
 
+typedef struct SceneCollection {
+	struct SceneCollection *next, *prev;
+	char name[64]; /* MAX_NAME */
+	char filter[64]; /* MAX_NAME */
+	ListBase scene_collections; /* nested collections */
+	ListBase objects;           /* (Object *)LinkData->data */
+	ListBase filter_objects;    /* (Object *)LinkData->data */
+} SceneCollection;
+
 /* ObjectBase->flag */
 enum {
 	BASE_SELECTED         = (1 << 0),




More information about the Bf-blender-cvs mailing list