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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-11-15 14:47:58 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-11-15 14:48:55 +0300
commit9a9ca5e40bd88a5444ca322d12c4544f659e5a29 (patch)
tree78c6f404e0c866d5038c3ddee96ab829e6fd1847 /source/blender/depsgraph
parentc3e2b40a915f430cb8c58d8e6367a85ae278b0d5 (diff)
Depsgraph: Build all type of IDs for modifiers and constraints
It was missing handling of collections there, which caused collection used for smoke colliders to not be in the dependency graph.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc16
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc24
2 files changed, 17 insertions, 23 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index c705f229669..adf67c5a8b1 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -412,6 +412,9 @@ void DepsgraphNodeBuilder::build_id(ID *id)
return;
}
switch (GS(id->name)) {
+ case ID_AC:
+ build_action((bAction *)id);
+ break;
case ID_AR:
build_armature((bArmature *)id);
break;
@@ -1663,17 +1666,15 @@ void DepsgraphNodeBuilder::modifier_walk(void *user_data,
}
switch (GS(id->name)) {
case ID_OB:
- /* TODO(sergey): Use visibility of owner of modifier stack. */
+ /* Special case for object, so we take owner visibility into
+ * account. */
data->builder->build_object(-1,
(Object *)id,
DEG_ID_LINKED_INDIRECTLY,
data->is_parent_visible);
break;
- case ID_TE:
- data->builder->build_texture((Tex *)id);
- break;
default:
- /* pass */
+ data->builder->build_id(id);
break;
}
}
@@ -1690,14 +1691,15 @@ void DepsgraphNodeBuilder::constraint_walk(bConstraint * /*con*/,
}
switch (GS(id->name)) {
case ID_OB:
- /* TODO(sergey): Use visibility of owner of modifier stack. */
+ /* Special case for object, so we take owner visibility into
+ * account. */
data->builder->build_object(-1,
(Object *)id,
DEG_ID_LINKED_INDIRECTLY,
data->is_parent_visible);
break;
default:
- /* pass */
+ data->builder->build_id(id);
break;
}
}
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index b6eb0af589c..7a26121801a 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -427,6 +427,9 @@ void DepsgraphRelationBuilder::build_id(ID *id)
return;
}
switch (GS(id->name)) {
+ case ID_AC:
+ build_action((bAction *)id);
+ break;
case ID_AR:
build_armature((bArmature *)id);
break;
@@ -2510,17 +2513,7 @@ void DepsgraphRelationBuilder::modifier_walk(void *user_data,
if (id == NULL) {
return;
}
- switch (GS(id->name)) {
- case ID_OB:
- data->builder->build_object(NULL, (Object *)id);
- break;
- case ID_TE:
- data->builder->build_texture((Tex *)id);
- break;
- default:
- /* pass */
- break;
- }
+ data->builder->build_id(id);
}
void DepsgraphRelationBuilder::constraint_walk(bConstraint * /*con*/,
@@ -2529,12 +2522,11 @@ void DepsgraphRelationBuilder::constraint_walk(bConstraint * /*con*/,
void *user_data)
{
BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
- if (*idpoin) {
- ID *id = *idpoin;
- if (GS(id->name) == ID_OB) {
- data->builder->build_object(NULL, (Object *)id);
- }
+ ID *id = *idpoin;
+ if (id == NULL) {
+ return;
}
+ data->builder->build_id(id);
}
} // namespace DEG