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:
authorMartin Poirier <theeth@yahoo.com>2009-10-16 01:54:22 +0400
committerMartin Poirier <theeth@yahoo.com>2009-10-16 01:54:22 +0400
commit6ffb79107c9509f01019c8bf9af2caf0348ca330 (patch)
tree14c81cb738c3ffc7a1efc6d0121ee45a6e51f068 /source/blender/editors/transform/transform_generics.c
parentdcecd8e043962c9f38b15d569849d0303773af32 (diff)
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)
Diffstat (limited to 'source/blender/editors/transform/transform_generics.c')
-rw-r--r--source/blender/editors/transform/transform_generics.c15
1 files changed, 14 insertions, 1 deletions
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))
||