Fix T62990: Selecting bones causes pose to be re-evaluated
This commit is contained in:
@@ -1306,7 +1306,7 @@ void DepsgraphNodeBuilder::build_armature(bArmature *armature)
|
||||
build_animdata(&armature->id);
|
||||
build_parameters(&armature->id);
|
||||
/* Make sure pose is up-to-date with armature updates. */
|
||||
add_operation_node(&armature->id, NodeType::PARAMETERS, OperationCode::ARMATURE_EVAL);
|
||||
add_operation_node(&armature->id, NodeType::ARMATURE, OperationCode::ARMATURE_EVAL);
|
||||
}
|
||||
|
||||
void DepsgraphNodeBuilder::build_camera(Camera *camera)
|
||||
|
||||
@@ -263,7 +263,7 @@ void DepsgraphRelationBuilder::build_rig(Object *object)
|
||||
add_relation(pose_init_ik_key, pose_done_key, "Pose Init IK -> Pose Cleanup");
|
||||
/* Make sure pose is up-to-date with armature updates. */
|
||||
build_armature(armature);
|
||||
OperationKey armature_key(&armature->id, NodeType::PARAMETERS, OperationCode::ARMATURE_EVAL);
|
||||
OperationKey armature_key(&armature->id, NodeType::ARMATURE, OperationCode::ARMATURE_EVAL);
|
||||
add_relation(armature_key, pose_init_key, "Data dependency");
|
||||
/* Run cleanup even when there are no bones. */
|
||||
add_relation(pose_init_key, pose_cleanup_key, "Init -> Cleanup");
|
||||
|
||||
@@ -228,7 +228,7 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(const PointerRNA *ptr,
|
||||
/* Armature-level bone mapped to Armature Eval, and thus Pose Init.
|
||||
* Drivers have special code elsewhere that links them to the pose
|
||||
* bone components, instead of using this generic code. */
|
||||
node_identifier.type = NodeType::PARAMETERS;
|
||||
node_identifier.type = NodeType::ARMATURE;
|
||||
node_identifier.operation_code = OperationCode::ARMATURE_EVAL;
|
||||
/* If trying to look up via an Object, e.g. due to lookup via
|
||||
* obj.pose.bones[].bone in a driver attached to the Object,
|
||||
|
||||
@@ -435,6 +435,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const Node *node)
|
||||
case NodeType::DUPLI:
|
||||
case NodeType::SYNCHRONIZATION:
|
||||
case NodeType::AUDIO:
|
||||
case NodeType::ARMATURE:
|
||||
case NodeType::GENERIC_DATABLOCK: {
|
||||
ComponentNode *comp_node = (ComponentNode *)node;
|
||||
if (!comp_node->operations.empty()) {
|
||||
|
||||
@@ -107,6 +107,8 @@ const char *nodeTypeAsString(NodeType type)
|
||||
return "SYNCHRONIZATION";
|
||||
case NodeType::AUDIO:
|
||||
return "AUDIO";
|
||||
case NodeType::ARMATURE:
|
||||
return "ARMATURE";
|
||||
case NodeType::GENERIC_DATABLOCK:
|
||||
return "GENERIC_DATABLOCK";
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ enum class NodeType {
|
||||
OBJECT_FROM_LAYER,
|
||||
/* Audio-related evaluation. */
|
||||
AUDIO,
|
||||
ARMATURE,
|
||||
/* Un-interestying datablock, which is a part of dependency graph, but does
|
||||
* not have very distinctive update procedure. */
|
||||
GENERIC_DATABLOCK,
|
||||
|
||||
@@ -365,6 +365,7 @@ DEG_COMPONENT_NODE_DEFINE(ObjectFromLayer, OBJECT_FROM_LAYER, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(Dupli, DUPLI, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(Synchronization, SYNCHRONIZATION, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(Audio, AUDIO, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(Armature, ARMATURE, 0);
|
||||
DEG_COMPONENT_NODE_DEFINE(GenericDatablock, GENERIC_DATABLOCK, 0);
|
||||
|
||||
/* Node Types Register =================================== */
|
||||
@@ -392,6 +393,7 @@ void deg_register_component_depsnodes()
|
||||
register_node_typeinfo(&DNTI_DUPLI);
|
||||
register_node_typeinfo(&DNTI_SYNCHRONIZATION);
|
||||
register_node_typeinfo(&DNTI_AUDIO);
|
||||
register_node_typeinfo(&DNTI_ARMATURE);
|
||||
register_node_typeinfo(&DNTI_GENERIC_DATABLOCK);
|
||||
}
|
||||
|
||||
|
||||
@@ -187,6 +187,7 @@ DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(ObjectFromLayer);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Dupli);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Synchronization);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Audio);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(Armature);
|
||||
DEG_COMPONENT_NODE_DECLARE_GENERIC(GenericDatablock);
|
||||
|
||||
/* Bone Component */
|
||||
|
||||
Reference in New Issue
Block a user