[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42660] trunk/blender/source/blender/ editors/mesh/meshtools.c: fix [#29620] Topology Mirror: not refreshing vertex UUIDs
Campbell Barton
ideasman42 at gmail.com
Fri Dec 16 05:01:17 CET 2011
Revision: 42660
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42660
Author: campbellbarton
Date: 2011-12-16 04:01:08 +0000 (Fri, 16 Dec 2011)
Log Message:
-----------
fix [#29620] Topology Mirror: not refreshing vertex UUIDs
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/meshtools.c
Modified: trunk/blender/source/blender/editors/mesh/meshtools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/meshtools.c 2011-12-16 03:45:44 UTC (rev 42659)
+++ trunk/blender/source/blender/editors/mesh/meshtools.c 2011-12-16 04:01:08 UTC (rev 42660)
@@ -873,7 +873,8 @@
}
static long *mesh_topo_lookup = NULL;
-static int mesh_topo_lookup_tot = -1;
+static int mesh_topo_lookup_vert_tot = -1;
+static int mesh_topo_lookup_edge_tot = -1;
static int mesh_topo_lookup_mode = -1;
/* mode is 's' start, or 'e' end, or 'u' use */
@@ -884,8 +885,10 @@
Mesh *me= ob->data;
if( (mesh_topo_lookup==NULL) ||
(mesh_topo_lookup_mode != ob->mode) ||
- (me->edit_mesh && me->edit_mesh->totvert != mesh_topo_lookup_tot) ||
- (me->edit_mesh==NULL && me->totvert != mesh_topo_lookup_tot)
+ (me->edit_mesh && (me->edit_mesh->totvert != mesh_topo_lookup_vert_tot)) ||
+ (me->edit_mesh && (me->edit_mesh->totedge != mesh_topo_lookup_edge_tot)) ||
+ (me->edit_mesh==NULL && me->totvert != mesh_topo_lookup_vert_tot) ||
+ (me->edit_mesh==NULL && me->totedge != mesh_topo_lookup_edge_tot)
) {
mesh_mirrtopo_table(ob, 's');
}
@@ -899,7 +902,8 @@
/* editmode*/
EditEdge *eed;
- int a, last, totvert;
+ int a, last;
+ int totvert, totedge;
int totUnique= -1, totUniqueOld= -1;
MIRRHASH_TYPE *MirrTopoHash = NULL;
@@ -930,12 +934,16 @@
/* Initialize the vert-edge-user counts used to detect unique topology */
if(em) {
- for(eed=em->edges.first; eed; eed= eed->next) {
+ totedge= 0;
+
+ for(eed=em->edges.first; eed; eed= eed->next, totedge++) {
MirrTopoHash[eed->v1->tmp.l]++;
MirrTopoHash[eed->v2->tmp.l]++;
}
} else {
- for(a=0, medge=me->medge; a<me->totedge; a++, medge++) {
+ totedge= me->totedge;
+
+ for(a=0, medge=me->medge; a < me->totedge; a++, medge++) {
MirrTopoHash[medge->v1]++;
MirrTopoHash[medge->v2]++;
}
@@ -1046,14 +1054,16 @@
MEM_freeN( MirrTopoHash );
MEM_freeN( MirrTopoHash_Prev );
- mesh_topo_lookup_tot = totvert;
+ mesh_topo_lookup_vert_tot = totvert;
+ mesh_topo_lookup_edge_tot = totedge;
} else if(mode=='e') { /* end table */
if (mesh_topo_lookup) {
MEM_freeN(mesh_topo_lookup);
}
mesh_topo_lookup = NULL;
- mesh_topo_lookup_tot= -1;
+ mesh_topo_lookup_vert_tot= -1;
+ mesh_topo_lookup_edge_tot= -1;
}
return 0;
}
More information about the Bf-blender-cvs
mailing list