Depsgraph: dependency on B-Bone start handle end roll when inheriting it.
authorAlexander Gavrilov <angavrilov@gmail.com>
Tue, 14 May 2019 19:24:34 +0000 (22:24 +0300)
committerAlexander Gavrilov <angavrilov@gmail.com>
Tue, 14 May 2019 19:26:49 +0000 (22:26 +0300)
Specifically the dependency is on any drivers that may be affecting
the RNA property of the handle bone, which currently link to segments.

source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc
source/blender/makesrna/intern/rna_armature.c

index fadce68..f8313dc 100644 (file)
@@ -383,7 +383,13 @@ void DepsgraphRelationBuilder::build_rig(Object *object)
       bPoseChannel *prev, *next;
       BKE_pchan_bbone_handles_get(pchan, &prev, &next);
       if (prev) {
-        OperationKey prev_key(&object->id, NodeType::BONE, prev->name, OperationCode::BONE_DONE);
+        OperationCode opcode = OperationCode::BONE_DONE;
+        /* Inheriting parent roll requires access to prev handle's B-Bone properties. */
+        if ((pchan->bone->flag & BONE_ADD_PARENT_END_ROLL) != 0 &&
+            check_pchan_has_bbone_segments(object, prev)) {
+          opcode = OperationCode::BONE_SEGMENTS;
+        }
+        OperationKey prev_key(&object->id, NodeType::BONE, prev->name, opcode);
         add_relation(prev_key, bone_segments_key, "Prev Handle -> B-Bone Segments");
       }
       if (next) {
index ffd28b4..0eec597 100644 (file)
@@ -635,9 +635,10 @@ void rna_def_bone_curved_common(StructRNA *srna, bool is_posebone)
   if (is_posebone == false) {
     prop = RNA_def_property(srna, "use_endroll_as_inroll", PROP_BOOLEAN, PROP_NONE);
     RNA_def_property_ui_text(
-        prop, "Inherit End Roll", "Use Roll Out of parent bone as Roll In of its children");
+        prop, "Inherit End Roll", "Add Roll Out of the Start Handle bone to the Roll In value");
     RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_ADD_PARENT_END_ROLL);
-    RNA_def_property_update(prop, 0, "rna_Armature_update_data");
+    RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+    RNA_def_property_update(prop, 0, "rna_Armature_dependency_update");
   }
 
   /* Curve X/Y Offsets */