[Bf-blender-cvs] [06839379c5d] master: Transform: Allow orientation change with custom matrix in modal

Germano Cavalcante noreply at git.blender.org
Fri May 1 22:41:14 CEST 2020


Commit: 06839379c5d4f541a80c4d0f4487d8eb2c6fbba0
Author: Germano Cavalcante
Date:   Fri May 1 17:40:54 2020 -0300
Branches: master
https://developer.blender.org/rB06839379c5d4f541a80c4d0f4487d8eb2c6fbba0

Transform: Allow orientation change with custom matrix in modal

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

M	source/blender/editors/transform/transform.c
M	source/blender/editors/transform/transform.h
M	source/blender/editors/transform/transform_constraints.c
M	source/blender/editors/transform/transform_orientations.c

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

diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 9ce98611b40..f3306caa931 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -828,7 +828,7 @@ static void transform_event_xyz_constraint(TransInfo *t, short key_type, bool is
       if (ELEM(cmode, '\0', axis)) {
         /* Successive presses on existing axis, cycle orientation modes. */
         t->orientation.index = (t->orientation.index + 1) % ARRAY_SIZE(t->orientation.types);
-        initTransformOrientation(t->context, t);
+        initTransformOrientation(t->context, t, t->orientation.types[t->orientation.index]);
       }
 
       if (t->orientation.index == 0) {
@@ -1893,7 +1893,13 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
   unit_m3(t->spacemtx);
 
   initTransInfo(C, t, op, event);
-  initTransformOrientation(C, t);
+
+  /* Use the custom orientation when it is set. */
+  short orientation = t->orientation.types[0] == V3D_ORIENT_CUSTOM_MATRIX ?
+                          V3D_ORIENT_CUSTOM_MATRIX :
+                          t->orientation.types[t->orientation.index];
+
+  initTransformOrientation(C, t, orientation);
 
   if (t->spacetype == SPACE_VIEW3D) {
     t->draw_handle_apply = ED_region_draw_cb_activate(
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 107cbde1658..503e7bd4691 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -912,7 +912,7 @@ void transform_data_ext_rotate(TransData *td, float mat[3][3], bool use_drot);
 
 /*********************** Transform Orientations ******************************/
 
-void initTransformOrientation(struct bContext *C, TransInfo *t);
+void initTransformOrientation(struct bContext *C, TransInfo *t, short orientation);
 
 /* Those two fill in mat and return non-zero on success */
 bool createSpaceNormal(float mat[3][3], const float normal[3]);
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 3d4fdba9bce..94cfed32841 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -996,7 +996,7 @@ void initSelectConstraint(TransInfo *t, bool force_global)
   else {
     if (t->orientation.index == 0) {
       t->orientation.index = 1;
-      initTransformOrientation(t->context, t);
+      initTransformOrientation(t->context, t, t->orientation.types[t->orientation.index]);
     }
     orientation = t->orientation.types[t->orientation.index];
   }
diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c
index 0edaf259f0e..3b1f3559daa 100644
--- a/source/blender/editors/transform/transform_orientations.c
+++ b/source/blender/editors/transform/transform_orientations.c
@@ -438,16 +438,11 @@ static int armature_bone_transflags_update_recursive(bArmature *arm,
   return total;
 }
 
-void initTransformOrientation(bContext *C, TransInfo *t)
+void initTransformOrientation(bContext *C, TransInfo *t, short orientation)
 {
   Object *ob = CTX_data_active_object(C);
   Object *obedit = CTX_data_active_object(C);
 
-  /* Use the custom orientation when it is set. */
-  short orientation = t->orientation.types[0] == V3D_ORIENT_CUSTOM_MATRIX ?
-                          V3D_ORIENT_CUSTOM_MATRIX :
-                          t->orientation.types[t->orientation.index];
-
   switch (orientation) {
     case V3D_ORIENT_GLOBAL:
       unit_m3(t->spacemtx);



More information about the Bf-blender-cvs mailing list