Depsgraph: Fix duplicated operation node when two objects are sharing same armature

This commit is contained in:
Sergey Sharybin 2017-01-24 17:15:39 +01:00
parent d84df351d0
commit 605695de61

@ -119,7 +119,17 @@ void DepsgraphNodeBuilder::build_rig(Scene *scene, Object *ob)
* Eventually, we need some type of proxy/isolation mechanism in-between here
* to ensure that we can use same rig multiple times in same scene...
*/
build_animdata(&arm->id);
if ((arm->id.tag & LIB_TAG_DOIT) == 0) {
build_animdata(&arm->id);
/* Make sure pose is up-to-date with armature updates. */
add_operation_node(&arm->id,
DEPSNODE_TYPE_PARAMETERS,
DEPSOP_TYPE_EXEC,
NULL,
DEG_OPCODE_PLACEHOLDER,
"Armature Eval");
}
/* Rebuild pose if not up to date. */
if (ob->pose == NULL || (ob->pose->flag & POSE_RECALC)) {
@ -141,14 +151,6 @@ void DepsgraphNodeBuilder::build_rig(Scene *scene, Object *ob)
}
}
/* Make sure pose is up-to-date with armature updates. */
add_operation_node(&arm->id,
DEPSNODE_TYPE_PARAMETERS,
DEPSOP_TYPE_EXEC,
NULL,
DEG_OPCODE_PLACEHOLDER,
"Armature Eval");
/**
* Pose Rig Graph
* ==============