[Bf-blender-cvs] [9506dcf6758] master: Fix T95029: Arrow gizmo always uses normal direction

Germano Cavalcante noreply at git.blender.org
Tue Jan 18 20:22:07 CET 2022


Commit: 9506dcf6758b4df7b01700c3f9cc61d05d93b50e
Author: Germano Cavalcante
Date:   Tue Jan 18 16:07:08 2022 -0300
Branches: master
https://developer.blender.org/rB9506dcf6758b4df7b01700c3f9cc61d05d93b50e

Fix T95029: Arrow gizmo always uses normal direction

Bug possibly introduced in {rBc57e4418bb85aec8bd3615fd775b990badb43d30}.

Interestingly, the orientation set before (NORMAL), even different from
the orientation that was actually used, was allowing the use of
"orient_matrix" ("orient_matrix_type" should have been NORMAL in that
case too).

In any case, make sure the "orient_matrix_type" and "orient_type" are the
same so that the "orient_matrix" is used.

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

M	source/blender/editors/transform/transform_gizmo_extrude_3d.c

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

diff --git a/source/blender/editors/transform/transform_gizmo_extrude_3d.c b/source/blender/editors/transform/transform_gizmo_extrude_3d.c
index 6e89c3de197..dee6e7281ef 100644
--- a/source/blender/editors/transform/transform_gizmo_extrude_3d.c
+++ b/source/blender/editors/transform/transform_gizmo_extrude_3d.c
@@ -82,6 +82,7 @@ typedef struct GizmoExtrudeGroup {
     float orient_matrix[3][3];
     bool constraint_axis[3];
     float value[4];
+    int orient_type;
   } redo_xform;
 
   /* Depends on object type. */
@@ -310,6 +311,7 @@ static void gizmo_mesh_extrude_refresh(const bContext *C, wmGizmoGroup *gzgroup)
     RNA_float_get_array(op_xform->ptr, "orient_matrix", &ggd->redo_xform.orient_matrix[0][0]);
     RNA_boolean_get_array(op_xform->ptr, "constraint_axis", ggd->redo_xform.constraint_axis);
     RNA_float_get_array(op_xform->ptr, "value", ggd->redo_xform.value);
+    ggd->redo_xform.orient_type = RNA_enum_get(op_xform->ptr, "orient_type");
 
     /* Set properties for redo. */
     for (int i = 0; i < 3; i++) {
@@ -435,7 +437,8 @@ static void gizmo_mesh_extrude_invoke_prepare(const bContext *UNUSED(C),
     if (gz == ggd->adjust[0]) {
       RNA_boolean_set_array(&macroptr, "constraint_axis", ggd->redo_xform.constraint_axis);
       RNA_float_set_array(&macroptr, "orient_matrix", &ggd->redo_xform.orient_matrix[0][0]);
-      RNA_enum_set(&macroptr, "orient_type", V3D_ORIENT_NORMAL);
+      RNA_enum_set(&macroptr, "orient_matrix_type", ggd->redo_xform.orient_type);
+      RNA_enum_set(&macroptr, "orient_type", ggd->redo_xform.orient_type);
     }
     RNA_float_set_array(&macroptr, "value", ggd->redo_xform.value);
   }



More information about the Bf-blender-cvs mailing list