forked from bartvdbraak/blender
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.
This commit is contained in:
parent
1ffdb1b472
commit
97c8619b42
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user