diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-06-28 11:13:57 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-06-28 11:13:57 +0300 |
commit | eac11046a151dd1dfc175f2c3faf00a3baa99956 (patch) | |
tree | 755b015ce271e1118f299885961b066eec505e55 /source/blender/depsgraph/intern | |
parent | 2110f4a76c0c473cec984ca9048f88e7f87f810b (diff) |
Fix T62990: Selecting bones causes pose to be re-evaluated
Diffstat (limited to 'source/blender/depsgraph/intern')
8 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index ae72720c267..e65dd3b4560 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -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) diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc index f8313dc854b..e254f8df0d2 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc @@ -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"); diff --git a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc index 3c3342fd3c0..a8d357cd5bd 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc @@ -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, diff --git a/source/blender/depsgraph/intern/debug/deg_debug_relations_graphviz.cc b/source/blender/depsgraph/intern/debug/deg_debug_relations_graphviz.cc index c4455a6e59f..9c4a672b805 100644 --- a/source/blender/depsgraph/intern/debug/deg_debug_relations_graphviz.cc +++ b/source/blender/depsgraph/intern/debug/deg_debug_relations_graphviz.cc @@ -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()) { diff --git a/source/blender/depsgraph/intern/node/deg_node.cc b/source/blender/depsgraph/intern/node/deg_node.cc index 7df96330ef0..289c9a76cc7 100644 --- a/source/blender/depsgraph/intern/node/deg_node.cc +++ b/source/blender/depsgraph/intern/node/deg_node.cc @@ -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"; diff --git a/source/blender/depsgraph/intern/node/deg_node.h b/source/blender/depsgraph/intern/node/deg_node.h index e350cc9a6f4..705dae41470 100644 --- a/source/blender/depsgraph/intern/node/deg_node.h +++ b/source/blender/depsgraph/intern/node/deg_node.h @@ -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, diff --git a/source/blender/depsgraph/intern/node/deg_node_component.cc b/source/blender/depsgraph/intern/node/deg_node_component.cc index f67a81f594f..830c53cfc76 100644 --- a/source/blender/depsgraph/intern/node/deg_node_component.cc +++ b/source/blender/depsgraph/intern/node/deg_node_component.cc @@ -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); } diff --git a/source/blender/depsgraph/intern/node/deg_node_component.h b/source/blender/depsgraph/intern/node/deg_node_component.h index 733d32e9c2d..53fbc6e617c 100644 --- a/source/blender/depsgraph/intern/node/deg_node_component.h +++ b/source/blender/depsgraph/intern/node/deg_node_component.h @@ -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 */ |