[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52133] trunk/blender/source/blender/bmesh /operators/bmo_bevel.c: bmesh bevel todo: don' t loop through all faces to find faces connected to a vertex.

Campbell Barton ideasman42 at gmail.com
Mon Nov 12 06:30:00 CET 2012


Revision: 52133
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52133
Author:   campbellbarton
Date:     2012-11-12 05:29:54 +0000 (Mon, 12 Nov 2012)
Log Message:
-----------
bmesh bevel todo: don't loop through all faces to find faces connected to a vertex.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_bevel.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-12 04:50:45 UTC (rev 52132)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-12 05:29:54 UTC (rev 52133)
@@ -1265,19 +1265,17 @@
 /* All polygons touching v need rebuilding because beveling v has made new vertices */
 static void bevel_rebuild_existing_polygons(BMesh *bm, BevelParams *bp, BMVert *v)
 {
-	BMFace *f;
-	BMIter iter;
+	int      faces_len, f_index;
+	BMFace **faces = BM_iter_as_arrayN(bm, BM_FACES_OF_VERT, v, &faces_len);
 
-	/* TODO: don't iterate through all faces, but just local geometry around v */
-	BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
-		BMLoop *l = f->l_first;
-		do {
-			if (l->v == v) {
-				rebuild_polygon(bm, bp, f);
-				BM_face_kill(bm, f);
-			}
-			l = l->next;
-		} while (l != f->l_first);
+	if (LIKELY(faces != NULL)) {
+		for (f_index = 0; f_index < faces_len; f_index++) {
+			BMFace *f = faces[f_index];
+			rebuild_polygon(bm, bp, f);
+			BM_face_kill(bm, f);
+		}
+
+		MEM_freeN(faces);
 	}
 }
 




More information about the Bf-blender-cvs mailing list