diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2016-11-24 18:26:48 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2016-11-24 18:26:52 +0300 |
commit | be976500fe6d8d7f6df15298ea806caaa42a0009 (patch) | |
tree | 457f88aa0f328a384dfda666ee9dce6935c00600 | |
parent | c5e47be6d7e22450f9975c49c8bb12df779e41dd (diff) |
Fix reading collection objects and small refactors here and there
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 11 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 22 |
2 files changed, 12 insertions, 21 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 0deab3d9752..9f87925bce0 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5501,10 +5501,14 @@ static void direct_link_view_settings(FileData *fd, ColorManagedViewSettings *vi static void direct_link_layer_collections(FileData *fd , ListBase *lb) { link_list(fd, lb); - for (LayerCollection *lc = lb->first; lc; lc = lc->next) { - link_list(fd, &(lc->elements)); link_list(fd, &(lc->overrides)); + link_list(fd, &lc->elements); + + for (LinkData *ld = lc->elements.first; ld; ld = ld->next) { + ld->data = newdataadr(fd, ld->data); + } + direct_link_layer_collections(fd, &lc->collections); } } @@ -5751,11 +5755,10 @@ static void direct_link_scene(FileData *fd, Scene *sce) direct_link_curvemapping(fd, &sce->r.mblur_shutter_curve); link_list(fd, &(sce->layers)); - for (sl = sce->layers.first; sl; sl = sl->next) { sl->obedit = NULL; - link_list(fd, &(sl->base)); sl->basact = newdataadr(fd, sl->basact); + link_list(fd, &(sl->base)); /* recursively direct link the layer collections */ direct_link_layer_collections(fd, &(sl->collections)); diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 51fa3d9157d..c22600efe07 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2404,17 +2404,10 @@ static void write_paint(WriteData *wd, Paint *p) /* recursively write the layer collections structs */ static void write_layer_collections(WriteData *wd, ListBase *lb) { + writelist(wd, DATA, LayerCollection, lb); for (LayerCollection *lc = lb->first; lc; lc = lc->next) { - writestruct(wd, DATA, LayerCollection, 1, lc); - - for (LinkData *link = lc->elements.first; link; link = link->next) { - writestruct(wd, DATA, LinkData, 1, link); - } - - for (CollectionOverride *ov = lc->overrides.first; ov; ov = ov->next) { - writestruct(wd, DATA, CollectionOverride, 1, ov); - } - + writelist(wd, DATA, CollectionOverride, &lc->overrides); + writelist(wd, DATA, LinkData, &lc->elements); write_layer_collections(wd, &(lc->collections)); } } @@ -2605,14 +2598,9 @@ static void write_scenes(WriteData *wd, ListBase *scebase) } /* writing scene layers to the blend file */ + writelist(wd, DATA, SceneLayer, &sce->layers); for (sl = sce->layers.first; sl; sl = sl->next) { - writestruct(wd, DATA, SceneLayer, 1, sl); - - base = sl->base.first; - while (base) { - writestruct(wd, DATA, Base, 1, base); - base = base->next; - } + writelist(wd, DATA, Base, &sl->base); /* recursively write the layer collections structs */ write_layer_collections(wd, &sl->collections); |