Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-02-21 13:13:25 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-02-21 13:13:25 +0300
commit74ee98f6422275c77d6186790379f4135c4a5a59 (patch)
tree0ddf09e012204f80c7cf02050b64ace4c9ae21b5 /source/blender/depsgraph
parentfe1a508e551bc8309f552d69da0b74f7f5f5d46f (diff)
Depsgraph: Fix dependency when constraint influence drives some other constraint
It is not possible to address transform at particular position of constraint stack, and when constraint is being addressed is usually from driver variable. This fixes some of dependency cycles reported in T54083.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/depsgraph.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index 997e7ad1d40..13b9f746e6b 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -149,16 +149,20 @@ static bool pointer_to_component_node_criteria(
Object *object = (Object *)ptr->id.data;
bConstraint *con = (bConstraint *)ptr->data;
/* Check whether is object or bone constraint. */
+ /* NOTE: Currently none of the area can address transform of an object
+ * at a given constraint, but for rigging one might use constraint
+ * influence to be used to drive some corrective shape keys or so.
+ */
if (BLI_findindex(&object->constraints, con) != -1) {
- /* Constraint is defining object transform. */
*type = DEG_NODE_TYPE_TRANSFORM;
+ *operation_code = DEG_OPCODE_TRANSFORM_LOCAL;
return true;
}
else if (object->pose != NULL) {
LISTBASE_FOREACH(bPoseChannel *, pchan, &object->pose->chanbase) {
if (BLI_findindex(&pchan->constraints, con) != -1) {
- /* bone transforms */
*type = DEG_NODE_TYPE_BONE;
+ *operation_code = DEG_OPCODE_BONE_LOCAL;
*subdata = pchan->name;
return true;
}