Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2016-12-06 18:20:36 +0300
committerDalai Felinto <dfelinto@gmail.com>2016-12-06 18:20:36 +0300
commit866b3268a5e8d07c6b44d75817b5a267e8d1ef73 (patch)
treef85a863e94de60b345fd87513db25653d88988b2 /source
parent97109b654e87911e943998e1e9344b6bd72e28bc (diff)
Fix write of nested LayerCollections (and DNA cleanup)
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenloader/intern/readfile.c1
-rw-r--r--source/blender/makesdna/DNA_layer_types.h26
2 files changed, 14 insertions, 13 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 4e9b74f833e..33132457497 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 2d8406ee2c5..b07f9f6ec47 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),