[Bf-blender-cvs] [3bede3ab898] temp-group-collections: Fix pre-evaluation step

Dalai Felinto noreply at git.blender.org
Wed Nov 1 18:15:03 CET 2017


Commit: 3bede3ab898245bbe2cdb51464140f78c0dda66a
Author: Dalai Felinto
Date:   Tue Oct 31 19:46:34 2017 -0200
Branches: temp-group-collections
https://developer.blender.org/rB3bede3ab898245bbe2cdb51464140f78c0dda66a

Fix pre-evaluation step

We now re-set bases with the scene properties as reference for both group
and scene objects.

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

M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/layer.c
M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/depsgraph/intern/builder/deg_builder_nodes_layer.cc

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

diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index a9bb653f420..fbc58c0026b 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -154,8 +154,9 @@ void BKE_collection_engine_property_value_set_bool(struct IDProperty *props, con
 /* evaluation */
 
 void BKE_layer_eval_layer_collection_pre(const struct EvaluationContext *eval_ctx,
-                                         struct ID *id,
-                                         struct SceneLayer *scene_layer);
+                                         struct Scene *Scene,
+                                         struct SceneLayer *scene_layer,
+                                         const bool sync_layer);
 void BKE_layer_eval_layer_collection(const struct EvaluationContext *eval_ctx,
                                      struct LayerCollection *layer_collection,
                                      struct LayerCollection *parent_layer_collection);
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index b1ff258c846..c0f81a2a19d 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -2059,19 +2059,16 @@ static void idproperty_reset(IDProperty **props, IDProperty *props_ref)
 }
 
 void BKE_layer_eval_layer_collection_pre(const struct EvaluationContext *UNUSED(eval_ctx),
-                                         ID *id, SceneLayer *scene_layer)
+                                         Scene *scene, SceneLayer *scene_layer, const bool sync_layer)
 {
-	DEBUG_PRINT("%s on %s (%p) for ID: %.2s\n", __func__, scene_layer->name, scene_layer, id->name);
-
-	Scene *scene = (GS(id->name) == ID_SCE ? (Scene *)id : NULL);
-	BLI_assert(scene || (GS(id->name) == ID_GR));
+	DEBUG_PRINT("%s on %s (%p)\n", __func__, scene_layer->name, scene_layer);
 
 	for (Base *base = scene_layer->object_bases.first; base != NULL; base = base->next) {
 		base->flag &= ~(BASE_VISIBLED | BASE_SELECTABLED);
-		idproperty_reset(&base->collection_properties, scene ? scene->collection_properties : NULL);
+		idproperty_reset(&base->collection_properties, scene->collection_properties);
 	}
 
-	if (scene) {
+	if (sync_layer) {
 		/* Sync properties from scene to scene layer. */
 		idproperty_reset(&scene_layer->properties_evaluated, scene->layer_properties);
 		IDP_MergeGroup(scene_layer->properties_evaluated, scene_layer->properties, true);
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 355961929ac..73aa75076e2 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -413,7 +413,7 @@ void DepsgraphNodeBuilder::build_group(Scene *scene, Group *group, LayerCollecti
 
 	ComponentDepsNode *comp = add_component_node(&group->id, DEG_NODE_TYPE_LAYER_COLLECTIONS);
 	add_operation_node(comp,
-	                   function_bind(BKE_layer_eval_layer_collection_pre, _1, &group->id, group->scene_layer),
+	                   function_bind(BKE_layer_eval_layer_collection_pre, _1, scene, group->scene_layer, false),
 	                   DEG_OPCODE_SCENE_LAYER_GROUP,
 	                   group->id.name + 2);
 	++state->index;
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_layer.cc
index 56f6e36865b..f6c7e4e13cd 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_layer.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_layer.cc
@@ -135,7 +135,7 @@ void DepsgraphNodeBuilder::build_scene_layer_collections(Scene *scene)
 		ComponentDepsNode *comp = add_component_node(&scene->id, DEG_NODE_TYPE_LAYER_COLLECTIONS);
 
 		add_operation_node(comp,
-		                   function_bind(BKE_layer_eval_layer_collection_pre, _1, &scene_cow->id, scene_layer),
+		                   function_bind(BKE_layer_eval_layer_collection_pre, _1, scene_cow, scene_layer, true),
 		                   DEG_OPCODE_SCENE_LAYER_INIT,
 		                   scene_layer->name);
 		add_operation_node(comp,



More information about the Bf-blender-cvs mailing list