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:
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations.cc')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index bdbac826544..002369b7910 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -468,6 +468,8 @@ void DepsgraphRelationBuilder::build_collection(
OperationKey object_transform_final_key(object != NULL ? &object->id : NULL,
DEG_NODE_TYPE_TRANSFORM,
DEG_OPCODE_TRANSFORM_FINAL);
+ ComponentKey duplicator_key(object != NULL ? &object->id : NULL,
+ DEG_NODE_TYPE_DUPLI);
if (!group_done) {
LISTBASE_FOREACH (CollectionObject *, cob, &collection->gobject) {
build_object(NULL, cob->ob);
@@ -480,7 +482,22 @@ void DepsgraphRelationBuilder::build_collection(
FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_BEGIN(collection, ob, graph_->mode)
{
ComponentKey dupli_transform_key(&ob->id, DEG_NODE_TYPE_TRANSFORM);
- add_relation(dupli_transform_key, object_transform_final_key, "Dupligroup");
+ add_relation(dupli_transform_key,
+ object_transform_final_key,
+ "Dupligroup");
+ /* Hook to special component, to ensure proper visibility/evaluation
+ * optimizations.
+ */
+ add_relation(dupli_transform_key, duplicator_key, "Dupligroup");
+ const eDepsNode_Type dupli_geometry_component_type =
+ deg_geometry_tag_to_component(&ob->id);
+ if (dupli_geometry_component_type != DEG_NODE_TYPE_UNDEFINED) {
+ ComponentKey dupli_geometry_component_key(
+ &ob->id, dupli_geometry_component_type);
+ add_relation(dupli_geometry_component_key,
+ duplicator_key,
+ "Dupligroup");
+ }
}
FOREACH_COLLECTION_VISIBLE_OBJECT_RECURSIVE_END;
}