[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