Depsgraph: Correction for previous fix
authorSergey Sharybin <sergey.vfx@gmail.com>
Mon, 29 Jan 2018 14:06:44 +0000 (15:06 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Mon, 29 Jan 2018 14:06:44 +0000 (15:06 +0100)
Original fix only worked when there is one custom property.

source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
source/blender/depsgraph/intern/builder/deg_builder_relations.cc
source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc

index 177a0ec4358f6fa3c6f88ba7f895efefbfb4cb31..29cd72c13fd71b8465b0e12a1ae6ea6cb5ef541b 100644 (file)
@@ -274,6 +274,7 @@ void DepsgraphNodeBuilder::build_proxy_rig(Object *object)
                                     DEG_OPCODE_POSE_INIT);
        op_node->set_as_entry();
 
+
        BLI_LISTBASE_FOREACH (bPoseChannel *, pchan, &object->pose->chanbase) {
                op_node = add_operation_node(&object->id, DEG_NODE_TYPE_BONE, pchan->name,
                                             NULL, DEG_OPCODE_BONE_LOCAL);
index 107ba8dc9a1a92ba6632c88db09b9009e6034f6e..85ea2c0a8e4352eee97347b8dc7ce8083018d208 100644 (file)
@@ -535,14 +535,6 @@ void DepsgraphRelationBuilder::build_object(Object *object)
                ComponentKey ob_pose_key(&object->id, DEG_NODE_TYPE_EVAL_POSE);
                ComponentKey proxy_pose_key(&object->proxy->id, DEG_NODE_TYPE_EVAL_POSE);
                add_relation(ob_pose_key, proxy_pose_key, "Proxy");
-
-               ComponentKey ob_parameters_key(&object->id,
-                                              DEG_NODE_TYPE_PARAMETERS);
-               ComponentKey proxy_parameters_key(&object->proxy->id,
-                                                 DEG_NODE_TYPE_PARAMETERS);
-               add_relation(ob_parameters_key,
-                            proxy_parameters_key,
-                            "Proxy Parameters");
        }
        /* Object dupligroup. */
        if (object->dup_group != NULL) {
index b0e997998243e3430ea8ad91512ef4206d8924d2..4a822fe74775dbc79deb334d09b9b809e3bbaf67 100644 (file)
@@ -444,6 +444,7 @@ void DepsgraphRelationBuilder::build_rig(Object *object)
 
 void DepsgraphRelationBuilder::build_proxy_rig(Object *object)
 {
+       Object *proxy_from = object->proxy_from;
        OperationKey pose_init_key(&object->id,
                                   DEG_NODE_TYPE_EVAL_POSE,
                                   DEG_OPCODE_POSE_INIT);
@@ -466,6 +467,20 @@ void DepsgraphRelationBuilder::build_proxy_rig(Object *object)
                add_relation(bone_local_key, bone_ready_key, "Local -> Ready");
                add_relation(bone_ready_key, bone_done_key, "Ready -> Done");
                add_relation(bone_done_key, pose_done_key, "Bone Done -> Pose Done");
+
+               if (pchan->prop != NULL) {
+                       OperationKey bone_parameters(&object->id,
+                                                    DEG_NODE_TYPE_PARAMETERS,
+                                                    DEG_OPCODE_PARAMETERS_EVAL,
+                                                    pchan->name);
+                       OperationKey from_bone_parameters(&proxy_from->id,
+                                                         DEG_NODE_TYPE_PARAMETERS,
+                                                         DEG_OPCODE_PARAMETERS_EVAL,
+                                                         pchan->name);
+                       add_relation(from_bone_parameters,
+                                    bone_parameters,
+                                    "Proxy Bone Parameters");
+               }
        }
 }