From 6ffb79107c9509f01019c8bf9af2caf0348ca330 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Thu, 15 Oct 2009 21:54:22 +0000 Subject: X Mirror editmesh with PET Lock vertice near the middle (|x| < 0.0001) on the mirror's plane. Don't propagate transformation across mirror plane (this could probably be smarter) --- source/blender/editors/transform/transform_generics.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/transform/transform_generics.c') diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 47f76aab4ca..8dc71710d82 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -259,11 +259,16 @@ static void editmesh_apply_to_mirror(TransInfo *t) continue; eve = td->extra; - if(eve) { + if (eve) { eve->co[0]= -td->loc[0]; eve->co[1]= td->loc[1]; eve->co[2]= td->loc[2]; } + + if (td->flag & TD_MIRROR_EDGE) + { + td->loc[0] = 0; + } } } @@ -969,6 +974,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) if (RNA_boolean_get(op->ptr, "mirror")) { t->flag |= T_MIRROR; + t->mirror = 1; } } // Need stuff to take it from edit mesh or whatnot here @@ -977,6 +983,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) if (t->obedit && t->obedit->type == OB_MESH && (((Mesh *)t->obedit->data)->editflag & ME_EDIT_MIRROR_X)) { t->flag |= T_MIRROR; + t->mirror = 1; } } @@ -1373,6 +1380,12 @@ void calculatePropRatio(TransInfo *t) if (td->flag & TD_SELECTED) { td->factor = 1.0f; } + else if (t->flag & T_MIRROR && td->loc[0] * t->mirror < -0.00001f) + { + td->flag |= TD_SKIP; + td->factor = 0.0f; + restoreElement(td); + } else if ((connected && (td->flag & TD_NOTCONNECTED || td->dist > t->prop_size)) || -- cgit v1.2.3