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>2015-11-06 16:36:22 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-11-06 16:36:22 +0300
commit97c8619b421b979dc4b05ed0959e90de532813ba (patch)
treec5bd70d8a5561456379b876de89ad9f8973809e8 /source/blender/depsgraph
parent1ffdb1b472f91425db0248170a8f3ba78f37fa09 (diff)
Fix T46587: Drivers do not work in node groups
This commit makes drivers on node groups to with when using new dependency graph. Still TODO: Need a relation between drivers and tree evaluation perhaps, so we guarantee proper order of all operations.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build_nodes.cc8
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build_relations.cc20
2 files changed, 19 insertions, 9 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cc b/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
index 4463df61f91..47aa14c7637 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
@@ -1101,7 +1101,7 @@ void DepsgraphNodeBuilder::build_nodetree(DepsNode *owner_node, bNodeTree *ntree
build_animdata(ntree_id);
/* Parameters for drivers. */
- add_operation_node(ntree_id, DEPSNODE_TYPE_PARAMETERS, DEPSOP_TYPE_EXEC, NULL,
+ add_operation_node(ntree_id, DEPSNODE_TYPE_PARAMETERS, DEPSOP_TYPE_POST, NULL,
DEG_OPCODE_PLACEHOLDER, "Parameters Eval");
/* nodetree's nodes... */
@@ -1114,9 +1114,9 @@ void DepsgraphNodeBuilder::build_nodetree(DepsNode *owner_node, bNodeTree *ntree
build_texture(owner_node, (Tex *)bnode->id);
}
else if (bnode->type == NODE_GROUP) {
- bNodeTree *ntree = (bNodeTree *)bnode->id;
- if ((ntree_id->flag & LIB_DOIT) == 0) {
- build_nodetree(owner_node, ntree);
+ bNodeTree *group_ntree = (bNodeTree *)bnode->id;
+ if ((group_ntree->id.flag & LIB_DOIT) == 0) {
+ build_nodetree(owner_node, group_ntree);
}
}
}
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cc b/source/blender/depsgraph/intern/depsgraph_build_relations.cc
index c348adaaf53..dfa7413d806 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cc
@@ -1778,6 +1778,11 @@ void DepsgraphRelationBuilder::build_nodetree(ID *owner, bNodeTree *ntree)
build_animdata(ntree_id);
+ OperationKey parameters_key(ntree_id,
+ DEPSNODE_TYPE_PARAMETERS,
+ DEG_OPCODE_PLACEHOLDER,
+ "Parameters Eval");
+
/* nodetree's nodes... */
for (bNode *bnode = (bNode *)ntree->nodes.first; bnode; bnode = bnode->next) {
if (bnode->id) {
@@ -1788,17 +1793,22 @@ void DepsgraphRelationBuilder::build_nodetree(ID *owner, bNodeTree *ntree)
build_texture(owner, (Tex *)bnode->id);
}
else if (bnode->type == NODE_GROUP) {
- bNodeTree *ntree = (bNodeTree *)bnode->id;
- if ((ntree_id->flag & LIB_DOIT) == 0) {
- build_nodetree(owner, ntree);
- ntree_id->flag |= LIB_DOIT;
+ bNodeTree *group_ntree = (bNodeTree *)bnode->id;
+ if ((group_ntree->id.flag & LIB_DOIT) == 0) {
+ build_nodetree(owner, group_ntree);
+ group_ntree->flag |= LIB_DOIT;
}
+ OperationKey group_parameters_key(&group_ntree->id,
+ DEPSNODE_TYPE_PARAMETERS,
+ DEG_OPCODE_PLACEHOLDER,
+ "Parameters Eval");
+ add_relation(group_parameters_key, parameters_key,
+ DEPSREL_TYPE_COMPONENT_ORDER, "Group Node");
}
}
}
if (needs_animdata_node(ntree_id)) {
- ComponentKey parameters_key(ntree_id, DEPSNODE_TYPE_PARAMETERS);
ComponentKey animation_key(ntree_id, DEPSNODE_TYPE_ANIMATION);
add_relation(animation_key, parameters_key,
DEPSREL_TYPE_COMPONENT_ORDER, "NTree Parameters");