diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-02-17 22:50:42 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-02-17 22:50:42 +0300 |
commit | c72ab0a39e2b0894c3ae0d27afeb0779b947853a (patch) | |
tree | adb3f903dadbc8fb87e49adce0798cfff0af5591 /source/blender/editors/mesh/editmesh_mods.c | |
parent | 1a6f683b437ff4aa79b7f122b590acd6fce2fc54 (diff) |
topology based mirror, (from apricot branch)
- correct errors with non-mirrored meshes
- mirror weight paint on asymmetrical meshes
Diffstat (limited to 'source/blender/editors/mesh/editmesh_mods.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh_mods.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index b2ae7ddf7e0..c5ec1214be9 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -104,14 +104,15 @@ static int pupmenu() {return 0;} void EM_cache_x_mirror_vert(struct Object *ob, struct EditMesh *em) { EditVert *eve, *eve_mirror; + int index= 0; for(eve= em->verts.first; eve; eve= eve->next) { eve->tmp.v= NULL; } - for(eve= em->verts.first; eve; eve= eve->next) { + for(eve= em->verts.first; eve; eve= eve->next, index++) { if(eve->tmp.v==NULL) { - eve_mirror = editmesh_get_x_mirror_vert(ob, em, eve->co); + eve_mirror = editmesh_get_x_mirror_vert(ob, em, eve, eve->co, index); if(eve_mirror) { eve->tmp.v= eve_mirror; eve_mirror->tmp.v = eve; @@ -4239,6 +4240,7 @@ static int smooth_vertex(bContext *C, wmOperator *op) float fvec[3]; int teller=0; ModifierData *md; + int index; /* count */ eve= em->verts.first; @@ -4313,13 +4315,14 @@ static int smooth_vertex(bContext *C, wmOperator *op) eed= eed->next; } + index= 0; eve= em->verts.first; while(eve) { if(eve->f & SELECT) { if(eve->f1) { if (((Mesh *)obedit->data)->editflag & ME_EDIT_MIRROR_X) { - eve_mir= editmesh_get_x_mirror_vert(obedit, em, eve->co); + eve_mir= editmesh_get_x_mirror_vert(obedit, em, eve, eve->co, index); } adr = eve->tmp.p; @@ -4352,6 +4355,7 @@ static int smooth_vertex(bContext *C, wmOperator *op) } eve->tmp.p= NULL; } + index++; eve= eve->next; } MEM_freeN(adror); |