diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2016-12-06 18:20:36 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2016-12-06 18:20:36 +0300 |
commit | 866b3268a5e8d07c6b44d75817b5a267e8d1ef73 (patch) | |
tree | f85a863e94de60b345fd87513db25653d88988b2 /source | |
parent | 97109b654e87911e943998e1e9344b6bd72e28bc (diff) |
Fix write of nested LayerCollections (and DNA cleanup)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 1 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_layer_types.h | 26 |
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), |