Commit: 97c8619b421b979dc4b05ed0959e90de532813ba
Author: Sergey Sharybin
Date:   Fri Nov 6 18:36:22 2015 +0500
Branches: master
https://developer.blender.org/rB97c8619b421b979dc4b05ed0959e90de532813ba

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.

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

M       source/blender/depsgraph/intern/depsgraph_build_nodes.cc
M       source/blender/depsgraph/intern/depsgraph_build_relations.cc

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cc 
b/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
index 4463df6..47aa14c 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 c348ada..dfa7413 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");

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to