Fix T76254: 'Normal' Transformation Orientation using Global
Issue introduced in rBc57e4418bb85.
This commit is contained in:
parent
ae049a6c6a
commit
185e1d5395
Notes:
blender-bot
2023-02-14 04:56:36 +01:00
Referenced by issue #78424, Individual Origins + Normal = Broken Again (works in 2.90, broken in 2.83 LTS) Referenced by issue #76254, 'Normal' Transformation Orientation uses Global Axes
|
@ -828,8 +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);
|
||||
BLI_assert(t->orientation.types[0] != V3D_ORIENT_CUSTOM_MATRIX);
|
||||
initTransformOrientation(t->context, t, t->orientation.types[t->orientation.index]);
|
||||
initTransformOrientation(t->context, t);
|
||||
}
|
||||
|
||||
if (t->orientation.index == 0) {
|
||||
|
@ -1894,10 +1893,7 @@ bool initTransform(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
|
|||
unit_m3(t->spacemtx);
|
||||
|
||||
initTransInfo(C, t, op, event);
|
||||
|
||||
/* Although `t->orientation.index` can be different from 0, always init the
|
||||
* default orientation so that in redo the contraint uses the `orient_matrix` */
|
||||
initTransformOrientation(C, t, t->orientation.types[0]);
|
||||
initTransformOrientation(C, t);
|
||||
|
||||
if (t->spacetype == SPACE_VIEW3D) {
|
||||
t->draw_handle_apply = ED_region_draw_cb_activate(
|
||||
|
|
|
@ -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, short orientation);
|
||||
void initTransformOrientation(struct bContext *C, TransInfo *t);
|
||||
|
||||
/* Those two fill in mat and return non-zero on success */
|
||||
bool createSpaceNormal(float mat[3][3], const float normal[3]);
|
||||
|
|
|
@ -1064,8 +1064,7 @@ void initSelectConstraint(TransInfo *t, bool force_global)
|
|||
else {
|
||||
if (t->orientation.index == 0) {
|
||||
t->orientation.index = 1;
|
||||
BLI_assert(t->orientation.types[0] != V3D_ORIENT_CUSTOM_MATRIX);
|
||||
initTransformOrientation(t->context, t, t->orientation.types[t->orientation.index]);
|
||||
initTransformOrientation(t->context, t);
|
||||
}
|
||||
orientation = t->orientation.types[t->orientation.index];
|
||||
}
|
||||
|
|
|
@ -438,11 +438,16 @@ static int armature_bone_transflags_update_recursive(bArmature *arm,
|
|||
return total;
|
||||
}
|
||||
|
||||
void initTransformOrientation(bContext *C, TransInfo *t, short orientation)
|
||||
void initTransformOrientation(bContext *C, TransInfo *t)
|
||||
{
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue