diff options
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); +} + /** \} */ /* -------------------------------------------------------------------- */ |