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
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2016-11-24 18:26:48 +0300
committerDalai Felinto <dfelinto@gmail.com>2016-11-24 18:26:52 +0300
commitbe976500fe6d8d7f6df15298ea806caaa42a0009 (patch)
tree457f88aa0f328a384dfda666ee9dce6935c00600
parentc5e47be6d7e22450f9975c49c8bb12df779e41dd (diff)
Fix reading collection objects and small refactors here and there
-rw-r--r--source/blender/blenloader/intern/readfile.c11
-rw-r--r--source/blender/blenloader/intern/writefile.c22
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);