[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52503] trunk/blender/source/blender/bmesh /tools/bmesh_bevel.c: skip some redundant looping in bevel code.

Campbell Barton ideasman42 at gmail.com
Fri Nov 23 07:09:07 CET 2012


Revision: 52503
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52503
Author:   campbellbarton
Date:     2012-11-23 06:09:03 +0000 (Fri, 23 Nov 2012)
Log Message:
-----------
skip some redundant looping in bevel code.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c

Modified: trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c	2012-11-23 05:49:00 UTC (rev 52502)
+++ trunk/blender/source/blender/bmesh/tools/bmesh_bevel.c	2012-11-23 06:09:03 UTC (rev 52503)
@@ -52,7 +52,7 @@
 typedef struct NewVert {
 	BMVert *v;
 	float co[3];
-	int _pad;
+//	int _pad;
 } NewVert;
 
 struct BoundVert;
@@ -295,12 +295,7 @@
 static BMFace *bev_create_quad_tri(BMesh *bm, BMVert *v1, BMVert *v2, BMVert *v3, BMVert *v4,
                                    BMFace *facerep)
 {
-	BMVert *varr[4];
-
-	varr[0] = v1;
-	varr[1] = v2;
-	varr[2] = v3;
-	varr[3] = v4;
+	BMVert *varr[4] = {v1, v2, v3, v4};
 	return bev_create_ngon(bm, varr, v4 ? 4 : 3, facerep);
 }
 
@@ -482,15 +477,13 @@
 static void vmesh_cent(VMesh *vm, float r_cent[3])
 {
 	BoundVert *v;
-	int tot = 0;
 	zero_v3(r_cent);
 
 	v = vm->boundstart;
 	do {
 		add_v3_v3(r_cent, v->nv.co);
-		tot++;
 	} while ((v = v->next) != vm->boundstart);
-	mul_v3_fl(r_cent, 1.0f / (float)tot);
+	mul_v3_fl(r_cent, 1.0f / (float)vm->count);
 }
 
 /**
@@ -1413,8 +1406,9 @@
 	BMFace *f;
 	BMIter iter, iter2;
 	EdgeHalf *e;
-	int i, ntot, found_shared_face, ccw_test_sum;
+	int i, found_shared_face, ccw_test_sum;
 	int nsel = 0;
+	int ntot = 0;
 
 	/* Gather input selected edges.
 	 * Only bevel selected edges that have exactly two incident faces.
@@ -1425,6 +1419,7 @@
 			BLI_assert(BM_edge_is_manifold(bme));
 			nsel++;
 		}
+		ntot++;
 	}
 
 	if (nsel == 0) {
@@ -1433,7 +1428,10 @@
 		return;
 	}
 
-	ntot = BM_vert_edge_count(v);
+	/* avoid calling BM_vert_edge_count since we loop over edges already */
+	// ntot = BM_vert_edge_count(v);
+	// BLI_assert(ntot == BM_vert_edge_count(v));
+
 	bv = (BevVert *)BLI_memarena_alloc(bp->mem_arena, (sizeof(BevVert)));
 	bv->v = v;
 	bv->edgecount = ntot;
@@ -1503,10 +1501,13 @@
 		}
 	}
 
+	/* do later when we loop over edges */
+#if 0
 	/* clear BEVEL_EDGE_TAG now that we are finished with it*/
 	for (i = 0; i < ntot; i++) {
 		BM_BEVEL_EDGE_TAG_DISABLE(bv->edges[i].e);
 	}
+#endif
 
 	/* if edge array doesn't go CCW around vertex from average normal side,
 	 * reverse the array, being careful to reverse face pointers too */
@@ -1528,10 +1529,10 @@
 		}
 	}
 
-	for (i = 0; i < ntot; i++) {
-		e = &bv->edges[i];
+	for (i = 0, e = bv->edges; i < ntot; i++, e++) {
 		e->next = &bv->edges[(i + 1) % ntot];
 		e->prev = &bv->edges[(i + ntot - 1) % ntot];
+		BM_BEVEL_EDGE_TAG_DISABLE(e->e);
 	}
 
 	build_boundary(bp->mem_arena, bv);




More information about the Bf-blender-cvs mailing list