[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