Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2020-04-29 14:07:25 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2020-04-29 14:07:25 +0300
commitc57e4418bb85aec8bd3615fd775b990badb43d30 (patch)
tree0485c9c5d853ec7e22113925463302808b052f72 /source/blender/editors/transform/transform_constraints.c
parent980cebc459fb1990b216b5c5c0935b30f10fedf7 (diff)
Transform Orientation Refactor
- Use `t->spacemtx` as the orientation matrix instead `t->orient_matrix`. - Unify constraint behavior between modal and non-modal. - Simplify code to remove old workarounds and rearrange struct members. This fix T66142 since the actual `orient_type` (in the case `V3D_ORIENT_NORMAL`) is used during Redo instead of always using `V3D_ORIENT_CUSTOM_MATRIX`). Differential Revision: https://developer.blender.org/D7469
Diffstat (limited to 'source/blender/editors/transform/transform_constraints.c')
-rw-r--r--source/blender/editors/transform/transform_constraints.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index cdff9fdf750..84b5387af86 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -713,7 +713,10 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
break;
case V3D_ORIENT_VIEW:
BLI_snprintf(text, sizeof(text), ftext, TIP_("view"));
- setConstraint(t, t->spacemtx, mode, text);
+ float mtx[3][3];
+ copy_m3_m3(mtx, t->spacemtx);
+ negate_v3(mtx[2]);
+ setConstraint(t, mtx, mode, text);
break;
case V3D_ORIENT_CURSOR:
BLI_snprintf(text, sizeof(text), ftext, TIP_("cursor"));
@@ -984,17 +987,23 @@ void getConstraintMatrix(TransInfo *t)
/*------------------------- MMB Select -------------------------------*/
-void initSelectConstraint(TransInfo *t, float mtx[3][3])
+void initSelectConstraint(TransInfo *t, bool force_global)
{
- copy_m3_m3(t->con.mtx, mtx);
- t->con.mode |= CON_APPLY;
- t->con.mode |= CON_SELECT;
+ short orientation;
+ if (force_global) {
+ orientation = V3D_ORIENT_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]);
+ }
+ orientation = t->orientation.types[t->orientation.index];
+ }
+ setUserConstraint(t, orientation, CON_APPLY | CON_SELECT, "");
setNearestAxis(t);
- t->con.drawExtra = NULL;
- t->con.applyVec = applyAxisConstraintVec;
- t->con.applySize = applyAxisConstraintSize;
- t->con.applyRot = applyAxisConstraintRot;
}
void selectConstraint(TransInfo *t)