[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39838] branches/bmesh/blender/source/ blender/blenkernel/intern/mesh_validate.c: BKE_mesh_calc_edges() now uses polygons when available.

Campbell Barton ideasman42 at gmail.com
Thu Sep 1 10:27:35 CEST 2011


Revision: 39838
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39838
Author:   campbellbarton
Date:     2011-09-01 08:27:35 +0000 (Thu, 01 Sep 2011)
Log Message:
-----------
BKE_mesh_calc_edges() now uses polygons when available.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/mesh_validate.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/mesh_validate.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/mesh_validate.c	2011-09-01 07:51:20 UTC (rev 39837)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/mesh_validate.c	2011-09-01 08:27:35 UTC (rev 39838)
@@ -338,20 +338,35 @@
 			BLI_edgehash_insert(eh, med->v1, med->v2, med);
 	}
 
-	for (i = 0; i < totface; i++, mf++) {
-		if (!BLI_edgehash_haskey(eh, mf->v1, mf->v2))
-			BLI_edgehash_insert(eh, mf->v1, mf->v2, NULL);
-		if (!BLI_edgehash_haskey(eh, mf->v2, mf->v3))
-			BLI_edgehash_insert(eh, mf->v2, mf->v3, NULL);
+	if(mesh->totpoly) {
+		/* mesh loops (bmesh only) */
+		MPoly *mp= mesh->mpoly;
+		for(i=0; i < mesh->totpoly; i++, mp++) {
+			MLoop *l= &mesh->mloop[mp->loopstart];
+			int j, l_prev= (l + (mp->totloop-1))->v;
+			for (j=0; j < mp->totloop; j++, l++) {
+				BLI_edgehash_insert(eh, l_prev, l->v, NULL);
+				l_prev= l->v;
+			}
+		}
+	}
+	else {
+		/* regular faces (note, we could remove this for bmesh - campbell) */
+		for (i = 0; i < totface; i++, mf++) {
+			if (!BLI_edgehash_haskey(eh, mf->v1, mf->v2))
+				BLI_edgehash_insert(eh, mf->v1, mf->v2, NULL);
+			if (!BLI_edgehash_haskey(eh, mf->v2, mf->v3))
+				BLI_edgehash_insert(eh, mf->v2, mf->v3, NULL);
 
-		if (mf->v4) {
-			if (!BLI_edgehash_haskey(eh, mf->v3, mf->v4))
-				BLI_edgehash_insert(eh, mf->v3, mf->v4, NULL);
-			if (!BLI_edgehash_haskey(eh, mf->v4, mf->v1))
-				BLI_edgehash_insert(eh, mf->v4, mf->v1, NULL);
-		} else {
-			if (!BLI_edgehash_haskey(eh, mf->v3, mf->v1))
-				BLI_edgehash_insert(eh, mf->v3, mf->v1, NULL);
+			if (mf->v4) {
+				if (!BLI_edgehash_haskey(eh, mf->v3, mf->v4))
+					BLI_edgehash_insert(eh, mf->v3, mf->v4, NULL);
+				if (!BLI_edgehash_haskey(eh, mf->v4, mf->v1))
+					BLI_edgehash_insert(eh, mf->v4, mf->v1, NULL);
+			} else {
+				if (!BLI_edgehash_haskey(eh, mf->v3, mf->v1))
+					BLI_edgehash_insert(eh, mf->v3, mf->v1, NULL);
+			}
 		}
 	}
 




More information about the Bf-blender-cvs mailing list