[Bf-blender-cvs] [89aa4b16040] blender2.8: Link and expand overrides for collections

Dalai Felinto noreply at git.blender.org
Tue Mar 20 19:06:49 CET 2018


Commit: 89aa4b160406eda3a55140254caedda598b2e686
Author: Dalai Felinto
Date:   Tue Mar 20 10:39:51 2018 -0300
Branches: blender2.8
https://developer.blender.org/rB89aa4b160406eda3a55140254caedda598b2e686

Link and expand overrides for collections

This code was neglected. Yet it is needed for when we support datablock
overrides so that the ID pointers are properly linked and expanded.

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

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

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 87e75384476..ac1e20d1e84 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5846,6 +5846,18 @@ static void lib_link_scene_collection(FileData *fd, Library *lib, SceneCollectio
 	}
 }
 
+static void lib_link_layer_collection(FileData *fd, LayerCollection *layer_collection)
+{
+	IDP_LibLinkProperty(layer_collection->properties, fd);
+
+	for (LayerCollection *layer_collection_nested = layer_collection->layer_collections.first;
+	     layer_collection_nested != NULL;
+	     layer_collection_nested = layer_collection_nested->next)
+	{
+		lib_link_layer_collection(fd, layer_collection_nested);
+	}
+}
+
 static void lib_link_view_layer(FileData *fd, Library *lib, ViewLayer *view_layer)
 {
 	/* tag scene layer to update for collection tree evaluation */
@@ -5866,6 +5878,16 @@ static void lib_link_view_layer(FileData *fd, Library *lib, ViewLayer *view_laye
 		base->flag |= BASE_DIRTY_ENGINE_SETTINGS;
 		base->collection_properties = NULL;
 	}
+
+	for (LayerCollection *layer_collection = view_layer->layer_collections.first;
+	     layer_collection != NULL;
+	     layer_collection = layer_collection->next)
+	{
+		lib_link_layer_collection(fd, layer_collection);
+	}
+
+	IDP_LibLinkProperty(view_layer->properties, fd);
+	IDP_LibLinkProperty(view_layer->id_properties, fd);
 }
 
 static void lib_link_scene(FileData *fd, Main *main)
@@ -9913,6 +9935,18 @@ static void expand_scene_collection(FileData *fd, Main *mainvar, SceneCollection
 	}
 }
 
+static void expand_layer_collection(FileData *fd, Main *mainvar, LayerCollection *layer_collection)
+{
+	expand_idprops(fd, mainvar, layer_collection->properties);
+
+	for (LayerCollection *layer_collection_nested = layer_collection->layer_collections.first;
+	     layer_collection_nested != NULL;
+	     layer_collection_nested = layer_collection_nested->next)
+	{
+		expand_layer_collection(fd, mainvar, layer_collection_nested);
+	}
+}
+
 static void expand_scene(FileData *fd, Main *mainvar, Scene *sce)
 {
 	SceneRenderLayer *srl;
@@ -9949,6 +9983,9 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce)
 	}
 
 	for (ViewLayer *view_layer = sce->view_layers.first; view_layer; view_layer = view_layer->next) {
+		expand_idprops(fd, mainvar, view_layer->properties);
+		expand_idprops(fd, mainvar, view_layer->id_properties);
+
 		for (module = view_layer->freestyle_config.modules.first; module; module = module->next) {
 			if (module->script) {
 				expand_doit(fd, mainvar, module->script);
@@ -9961,6 +9998,13 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce)
 			}
 			expand_doit(fd, mainvar, lineset->linestyle);
 		}
+
+		for (LayerCollection *layer_collection = view_layer->layer_collections.first;
+		     layer_collection != NULL;
+		     layer_collection = layer_collection->next)
+		{
+			expand_layer_collection(fd, mainvar, layer_collection);
+		}
 	}
 
 	if (sce->r.dometext)



More information about the Bf-blender-cvs mailing list