From 5d3ba4fb80dc5def0a11d894bcba19f4fa08fd23 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 30 Jun 2015 18:26:37 +1000 Subject: Cleanup: transform grid snap round, not floor --- source/blender/editors/transform/transform_snap.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 1b0256bdeed..9555596a380 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -384,7 +384,8 @@ void applyGridAbsolute(TransInfo *t) float grid_size = 0.0f; GearsType grid_action; TransData *td; - float imat[4][4]; + float (*obmat)[4] = NULL; + bool use_obmat = false; int i; if (!(activeSnap(t) && (t->tsnap.mode == SCE_SNAP_MODE_GRID))) @@ -405,7 +406,8 @@ void applyGridAbsolute(TransInfo *t) if (t->flag & (T_EDIT | T_POSE)) { Object *ob = t->obedit ? t->obedit : t->poseobj; - invert_m4_m4(imat, ob->obmat); + obmat = ob->obmat; + use_obmat = true; } for (i = 0, td = t->data; i < t->total; i++, td++) { @@ -421,9 +423,8 @@ void applyGridAbsolute(TransInfo *t) continue; copy_v3_v3(iloc, td->loc); - if (t->flag & (T_EDIT | T_POSE)) { - Object *ob = t->obedit ? t->obedit : t->poseobj; - mul_m4_v3(ob->obmat, iloc); + if (use_obmat) { + mul_m4_v3(obmat, iloc); } else if (t->flag & T_OBJECT) { td->ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME; @@ -432,11 +433,11 @@ void applyGridAbsolute(TransInfo *t) } mul_v3_v3fl(loc, iloc, 1.0f / grid_size); - loc[0] = floorf(loc[0]); - loc[1] = floorf(loc[1]); - loc[2] = floorf(loc[2]); + loc[0] = roundf(loc[0]); + loc[1] = roundf(loc[1]); + loc[2] = roundf(loc[2]); mul_v3_fl(loc, grid_size); - + sub_v3_v3v3(tvec, loc, iloc); mul_m3_v3(td->smtx, tvec); add_v3_v3(td->loc, tvec); -- cgit v1.2.3