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:
Diffstat (limited to 'source/blender/src')
-rw-r--r--source/blender/src/editmesh_mods.c12
-rw-r--r--source/blender/src/meshtools.c24
-rw-r--r--source/blender/src/transform_conversions.c2
3 files changed, 21 insertions, 17 deletions
diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c
index e4a7bc6da13..0ebbaf18aee 100644
--- a/source/blender/src/editmesh_mods.c
+++ b/source/blender/src/editmesh_mods.c
@@ -117,10 +117,10 @@ void EM_select_mirrored(void)
if(G.scene->selectmode & SCE_SELECT_VERTEX) {
EditMesh *em = G.editMesh;
EditVert *eve, *v1;
-
- for(eve= em->verts.first; eve; eve= eve->next) {
+ int a;
+ for(eve= em->verts.first, a=0; eve; eve= eve->next, a++) {
if(eve->f & SELECT) {
- v1= editmesh_get_x_mirror_vert(G.obedit, eve);
+ v1= editmesh_get_x_mirror_vert(G.obedit, eve, a);
if(v1) {
eve->f &= ~SELECT;
v1->f |= SELECT;
@@ -4168,7 +4168,7 @@ void vertexsmooth(void)
EditEdge *eed;
float *adror, *adr, fac;
float fvec[3];
- int teller=0;
+ int teller=0, a;
ModifierData *md= G.obedit->modifiers.first;
if(G.obedit==0) return;
@@ -4243,13 +4243,14 @@ void vertexsmooth(void)
eed= eed->next;
}
+ a = 0;
eve= em->verts.first;
while(eve) {
if(eve->f & SELECT) {
if(eve->f1) {
if (G.scene->toolsettings->editbutflag & B_MESH_X_MIRROR) {
- eve_mir= editmesh_get_x_mirror_vert(G.obedit, eve);
+ eve_mir= editmesh_get_x_mirror_vert(G.obedit, eve, a);
}
adr = eve->tmp.p;
@@ -4283,6 +4284,7 @@ void vertexsmooth(void)
eve->tmp.p= NULL;
}
eve= eve->next;
+ a++;
}
MEM_freeN(adror);
diff --git a/source/blender/src/meshtools.c b/source/blender/src/meshtools.c
index 9c002f1f7fb..12fc3c15625 100644
--- a/source/blender/src/meshtools.c
+++ b/source/blender/src/meshtools.c
@@ -899,7 +899,7 @@ long mesh_mirrtopo_table(Object *ob, char mode)
EditVert *eve;
totvert= 0;
for(eve= G.editMesh->verts.first; eve; eve= eve->next) {
- eve->tmp.l = totvert++;
+ eve->hash = totvert++;
}
} else {
totvert = me->totvert;
@@ -910,8 +910,8 @@ long mesh_mirrtopo_table(Object *ob, char mode)
/* Initialize the vert-edge-user counts used to detect unique topology */
if(ob==G.obedit) {
for(eed=G.editMesh->edges.first; eed; eed= eed->next) {
- MirrTopoHash[eed->v1->tmp.l]++;
- MirrTopoHash[eed->v2->tmp.l]++;
+ MirrTopoHash[eed->v1->hash]++;
+ MirrTopoHash[eed->v2->hash]++;
}
} else {
for(a=0, medge=me->medge; a<me->totedge; a++, medge++) {
@@ -928,8 +928,8 @@ long mesh_mirrtopo_table(Object *ob, char mode)
if(ob==G.obedit) {
for(eed=G.editMesh->edges.first; eed; eed= eed->next) {
- MirrTopoHash[eed->v1->tmp.l] += MirrTopoHash_Prev[eed->v2->tmp.l];
- MirrTopoHash[eed->v2->tmp.l] += MirrTopoHash_Prev[eed->v1->tmp.l];
+ MirrTopoHash[eed->v1->hash] += MirrTopoHash_Prev[eed->v2->hash];
+ MirrTopoHash[eed->v2->hash] += MirrTopoHash_Prev[eed->v1->hash];
}
} else {
for(a=0, medge=me->medge; a<me->totedge; a++, medge++) {
@@ -1086,14 +1086,16 @@ static EditVert *editmesh_get_x_mirror_vert_spacial(Object *ob, float *co)
return NULL;
}
-static EditVert *editmesh_get_x_mirror_vert_topo(Object *ob, EditVert *eve)
+static EditVert *editmesh_get_x_mirror_vert_topo(Object *ob, EditVert *eve, int index)
{
long poinval;
- int index;
if (mesh_mirrtopo_table(ob, 'u')==-1)
return NULL;
- index = BLI_findindex(&G.editMesh->verts, eve);
+ if (index!=-1) {
+ index = BLI_findindex(&G.editMesh->verts, eve);
+ }
+
if (index==-1)
return NULL;
@@ -1104,12 +1106,12 @@ static EditVert *editmesh_get_x_mirror_vert_topo(Object *ob, EditVert *eve)
return NULL;
}
-EditVert *editmesh_get_x_mirror_vert(Object *ob, EditVert *eve)
+EditVert *editmesh_get_x_mirror_vert(Object *ob, EditVert *eve, int index)
{
if (G.scene->toolsettings->editbutflag & B_MIRROR_TOPO) {
- return editmesh_get_x_mirror_vert_topo(ob, eve);
+ return editmesh_get_x_mirror_vert_topo(ob, eve, index);
} else {
- return editmesh_get_x_mirror_vert_spacial(ob, eve);
+ return editmesh_get_x_mirror_vert_spacial(ob, eve->co);
}
}
diff --git a/source/blender/src/transform_conversions.c b/source/blender/src/transform_conversions.c
index a9cdd95a699..31a59601448 100644
--- a/source/blender/src/transform_conversions.c
+++ b/source/blender/src/transform_conversions.c
@@ -2168,7 +2168,7 @@ static void createTransEditVerts(TransInfo *t)
/* Mirror? */
if( (mirror>0 && tob->iloc[0]>0.0f) || (mirror<0 && tob->iloc[0]<0.0f)) {
- EditVert *vmir= editmesh_get_x_mirror_vert(G.obedit, eve); /* initializes octree on first call */
+ EditVert *vmir= editmesh_get_x_mirror_vert(G.obedit, eve, a); /* initializes octree on first call */
if(vmir != eve) tob->tdmir = vmir;
}
tob++;