[Bf-blender-cvs] [be97650] layers: Fix reading collection objects and small refactors here and there

Dalai Felinto noreply at git.blender.org
Thu Nov 24 16:27:15 CET 2016


Commit: be976500fe6d8d7f6df15298ea806caaa42a0009
Author: Dalai Felinto
Date:   Thu Nov 24 16:26:48 2016 +0100
Branches: layers
https://developer.blender.org/rBbe976500fe6d8d7f6df15298ea806caaa42a0009

Fix reading collection objects and small refactors here and there

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

M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 0deab3d..9f87925 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 51fa3d9..c22600e 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);




More information about the Bf-blender-cvs mailing list