[Bf-blender-cvs] [ef4505a1583] master: Fix T68610: B-Bone display size/scaling op issues

mano-wii noreply at git.blender.org
Fri Feb 14 15:51:38 CET 2020


Commit: ef4505a1583f117414b484c7bd00a942854fb33d
Author: mano-wii
Date:   Fri Feb 14 11:51:29 2020 -0300
Branches: master
https://developer.blender.org/rBef4505a1583f117414b484c7bd00a942854fb33d

Fix T68610: B-Bone display size/scaling op issues

Fix ReDo and create a new operator to display only the required properties.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D6849

===================================================================

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	source/blender/editors/transform/transform_mode_bonesize.c
M	source/blender/editors/transform/transform_ops.c

===================================================================

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 929a400244b..1560ed8012e 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -3468,7 +3468,7 @@ def km_pose(params):
         ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None),
         ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None),
         ("pose.bone_layers", {"type": 'M', "value": 'PRESS'}, None),
-        ("transform.transform", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
+        ("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
          {"properties": [("mode", 'BONE_SIZE')]}),
         ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None),
         ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None),
@@ -4187,7 +4187,7 @@ def km_armature(params):
         ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None),
         ("armature.bone_layers", {"type": 'M', "value": 'PRESS'}, None),
         # Special transforms.
-        ("transform.transform", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
+        ("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True},
          {"properties": [("mode", 'BONE_SIZE')]}),
         ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True},
          {"properties": [("mode", 'BONE_ENVELOPE')]}),
@@ -5404,7 +5404,7 @@ def km_3d_view_tool_edit_armature_bone_size(params):
         "3D View Tool: Edit Armature, Bone Size",
         {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
         {"items": [
-            ("transform.transform", {"type": params.tool_tweak, "value": 'ANY'},
+            ("transform.bbone_resize", {"type": params.tool_tweak, "value": 'ANY'},
              {"properties": [("release_confirm", True), ("mode", 'BONE_SIZE')]}),
         ]},
     )
diff --git a/source/blender/editors/transform/transform_mode_bonesize.c b/source/blender/editors/transform/transform_mode_bonesize.c
index 57c6df95a0f..9ca1857f011 100644
--- a/source/blender/editors/transform/transform_mode_bonesize.c
+++ b/source/blender/editors/transform/transform_mode_bonesize.c
@@ -108,22 +108,26 @@ static void ElementBoneSize(TransInfo *t, TransDataContainer *tc, TransData *td,
 
 static void applyBoneSize(TransInfo *t, const int UNUSED(mval[2]))
 {
-  float size[3], mat[3][3];
-  float ratio = t->values[0];
+  float mat[3][3];
   int i;
   char str[UI_MAX_DRAW_STR];
 
-  copy_v3_fl(size, ratio);
+  if (t->flag & T_INPUT_IS_VALUES_FINAL) {
+    copy_v3_v3(t->values_final, t->values);
+  }
+  else {
+    float ratio = t->values[0];
 
-  snapGridIncrement(t, size);
+    copy_v3_fl(t->values_final, ratio);
 
-  if (applyNumInput(&t->num, size)) {
-    constraintNumInput(t, size);
-  }
+    snapGridIncrement(t, t->values_final);
 
-  copy_v3_v3(t->values_final, size);
+    if (applyNumInput(&t->num, t->values_final)) {
+      constraintNumInput(t, t->values_final);
+    }
+  }
 
-  size_to_mat3(mat, size);
+  size_to_mat3(mat, t->values_final);
 
   if (t->con.applySize) {
     t->con.applySize(t, NULL, NULL, mat);
@@ -131,7 +135,7 @@ static void applyBoneSize(TransInfo *t, const int UNUSED(mval[2]))
 
   copy_m3_m3(t->mat, mat);  // used in gizmo
 
-  headerBoneSize(t, size, str);
+  headerBoneSize(t, t->values_final, str);
 
   FOREACH_TRANS_DATA_CONTAINER (t, tc) {
     TransData *td = tc->data;
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index 09992e8be0e..39f6f24eb8d 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -75,6 +75,7 @@ static const char OP_PUSH_PULL[] = "TRANSFORM_OT_push_pull";
 static const char OP_TILT[] = "TRANSFORM_OT_tilt";
 static const char OP_TRACKBALL[] = "TRANSFORM_OT_trackball";
 static const char OP_MIRROR[] = "TRANSFORM_OT_mirror";
+static const char OP_BONE_SIZE[] = "TRANSFORM_OT_bbone_resize";
 static const char OP_EDGE_SLIDE[] = "TRANSFORM_OT_edge_slide";
 static const char OP_VERT_SLIDE[] = "TRANSFORM_OT_vert_slide";
 static const char OP_EDGE_CREASE[] = "TRANSFORM_OT_edge_crease";
@@ -94,6 +95,7 @@ static void TRANSFORM_OT_push_pull(struct wmOperatorType *ot);
 static void TRANSFORM_OT_tilt(struct wmOperatorType *ot);
 static void TRANSFORM_OT_trackball(struct wmOperatorType *ot);
 static void TRANSFORM_OT_mirror(struct wmOperatorType *ot);
+static void TRANSFORM_OT_bbone_resize(struct wmOperatorType *ot);
 static void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot);
 static void TRANSFORM_OT_vert_slide(struct wmOperatorType *ot);
 static void TRANSFORM_OT_edge_crease(struct wmOperatorType *ot);
@@ -114,6 +116,7 @@ static TransformModeItem transform_modes[] = {
     {OP_TILT, TFM_TILT, TRANSFORM_OT_tilt},
     {OP_TRACKBALL, TFM_TRACKBALL, TRANSFORM_OT_trackball},
     {OP_MIRROR, TFM_MIRROR, TRANSFORM_OT_mirror},
+    {OP_BONE_SIZE, TFM_BONESIZE, TRANSFORM_OT_bbone_resize},
     {OP_EDGE_SLIDE, TFM_EDGE_SLIDE, TRANSFORM_OT_edge_slide},
     {OP_VERT_SLIDE, TFM_VERT_SLIDE, TRANSFORM_OT_vert_slide},
     {OP_EDGE_CREASE, TFM_CREASE, TRANSFORM_OT_edge_crease},
@@ -1015,6 +1018,30 @@ static void TRANSFORM_OT_mirror(struct wmOperatorType *ot)
       ot, P_ORIENT_MATRIX | P_CONSTRAINT | P_PROPORTIONAL | P_GPENCIL_EDIT | P_CENTER);
 }
 
+static void TRANSFORM_OT_bbone_resize(struct wmOperatorType *ot)
+{
+  /* identifiers */
+  ot->name = "Scale B-Bone";
+  ot->description = "Scale selected bendy bones display size";
+  ot->idname = OP_BONE_SIZE;
+  ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_BLOCKING;
+
+  /* api callbacks */
+  ot->invoke = transform_invoke;
+  ot->exec = transform_exec;
+  ot->modal = transform_modal;
+  ot->cancel = transform_cancel;
+  ot->poll = ED_operator_screenactive;
+  ot->poll_property = transform_poll_property;
+
+  RNA_def_float_translation(
+      ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "Display Size", "", -FLT_MAX, FLT_MAX);
+
+  WM_operatortype_props_advanced_begin(ot);
+
+  Transform_Properties(ot, P_ORIENT_MATRIX | P_CONSTRAINT | P_MIRROR);
+}
+
 static void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot)
 {
   PropertyRNA *prop;



More information about the Bf-blender-cvs mailing list