diff options
author | Martin Poirier <theeth@yahoo.com> | 2010-11-14 19:31:06 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2010-11-14 19:31:06 +0300 |
commit | bc7903c858be3464b26a235ca341766f406b3eca (patch) | |
tree | 0f59621ab8466d4aafeb92a6a5e715496118fa77 /source/blender/editors/transform | |
parent | 25bd3feeb5342daa2ead14b66a30de8f4a9ead8a (diff) |
[#24639] Snap to Face (retopo) doesn't work when clipping is enabled in mirror modifier.
Apply project snap at the very end.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index dd3e4698ef5..6e71cf30112 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -622,11 +622,6 @@ void recalcData(TransInfo *t) } else if (t->spacetype == SPACE_VIEW3D) { - /* project */ - if(t->state != TRANS_CANCEL) { - applyProject(t); - } - if (t->obedit) { if ELEM(t->obedit->type, OB_CURVE, OB_SURF) { Curve *cu= t->obedit->data; @@ -635,6 +630,7 @@ void recalcData(TransInfo *t) if(t->state != TRANS_CANCEL) { clipMirrorModifier(t, t->obedit); + applyProject(t); } DAG_id_flush_update(t->obedit->data, OB_RECALC_DATA); /* sets recalc flags */ @@ -655,6 +651,11 @@ void recalcData(TransInfo *t) } else if(t->obedit->type==OB_LATTICE) { Lattice *la= t->obedit->data; + + if(t->state != TRANS_CANCEL) { + applyProject(t); + } + DAG_id_flush_update(t->obedit->data, OB_RECALC_DATA); /* sets recalc flags */ if(la->editlatt->latt->flag & LT_OUTSIDE) outside_lattice(la->editlatt->latt); @@ -664,6 +665,7 @@ void recalcData(TransInfo *t) /* mirror modifier clipping? */ if(t->state != TRANS_CANCEL) { clipMirrorModifier(t, t->obedit); + applyProject(t); } if((t->options & CTX_NO_MIRROR) == 0 && (t->flag & T_MIRROR)) editmesh_apply_to_mirror(t); @@ -679,6 +681,10 @@ void recalcData(TransInfo *t) TransData *td = t->data; int i; + if(t->state != TRANS_CANCEL) { + applyProject(t); + } + /* Ensure all bones are correctly adjusted */ for (ebo = edbo->first; ebo; ebo = ebo->next){ @@ -751,7 +757,12 @@ void recalcData(TransInfo *t) } else + { + if(t->state != TRANS_CANCEL) { + applyProject(t); + } DAG_id_flush_update(t->obedit->data, OB_RECALC_DATA); /* sets recalc flags */ + } } else if( (t->flag & T_POSE) && t->poseobj) { Object *ob= t->poseobj; @@ -777,11 +788,18 @@ void recalcData(TransInfo *t) where_is_pose(scene, ob); } else if(base && (base->object->mode & OB_MODE_PARTICLE_EDIT) && PE_get_current(scene, base->object)) { + if(t->state != TRANS_CANCEL) { + applyProject(t); + } flushTransParticles(t); } else { int i; + if(t->state != TRANS_CANCEL) { + applyProject(t); + } + for (i = 0; i < t->total; i++) { TransData *td = t->data + i; Object *ob = td->ob; |