diff options
author | Germano Cavalcantemano-wii <germano.costa@ig.com.br> | 2021-01-11 02:24:46 +0300 |
---|---|---|
committer | Germano Cavalcantemano-wii <germano.costa@ig.com.br> | 2021-01-11 02:24:46 +0300 |
commit | 08e44b5e3ebbdc79ca849ce14f4d75a88f72a8b7 (patch) | |
tree | 0e51294e37f556fa54c69b362ad2f50409ff4e36 /source/blender/editors/transform/transform_snap.c | |
parent | 9db3d1951da15254efbbcf028176facb78118ec1 (diff) |
Fix Increment Snapping Without Constraints in Non-Axis-Aligned Views
The incremental snap was always operating in the local space, which in most
cases is the VIEW type orientation.
Use only local space when the operation is affected by constraint.
Differential Revision: https://developer.blender.org/D10052
Diffstat (limited to 'source/blender/editors/transform/transform_snap.c')
-rw-r--r-- | source/blender/editors/transform/transform_snap.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index e5b16d0ef6e..c19dd4598cf 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -1536,7 +1536,7 @@ static void snap_increment_apply(TransInfo *t, snap_increment_apply_ex(t, max_index, increment_dist, asp, r_val, r_val); } -bool transform_snap_increment(TransInfo *t, float *val) +bool transform_snap_increment_ex(TransInfo *t, bool use_local_space, float *r_val) { if (!activeSnap(t)) { return false; @@ -1552,12 +1552,26 @@ bool transform_snap_increment(TransInfo *t, float *val) return false; } + if (use_local_space) { + BLI_assert(t->idx_max == 2); + mul_m3_v3(t->spacemtx_inv, r_val); + } + float increment_dist = (t->modifiers & MOD_PRECISION) ? t->snap[1] : t->snap[0]; + snap_increment_apply(t, t->idx_max, increment_dist, r_val); + + if (use_local_space) { + mul_m3_v3(t->spacemtx, r_val); + } - snap_increment_apply(t, t->idx_max, increment_dist, val); return true; } +bool transform_snap_increment(TransInfo *t, float *r_val) +{ + return transform_snap_increment_ex(t, false, r_val); +} + /** \} */ /* -------------------------------------------------------------------- */ |