[Bf-blender-cvs] [4a356d7] master: BMesh: BM_verts_from_edges utility function

Campbell Barton noreply at git.blender.org
Thu Dec 24 10:38:25 CET 2015


Commit: 4a356d767b3a3481c836e0a5b4e5c56a6f92efc2
Author: Campbell Barton
Date:   Thu Dec 24 19:51:41 2015 +1100
Branches: master
https://developer.blender.org/rB4a356d767b3a3481c836e0a5b4e5c56a6f92efc2

BMesh: BM_verts_from_edges utility function

===================================================================

M	source/blender/bmesh/intern/bmesh_construct.c
M	source/blender/bmesh/intern/bmesh_construct.h
M	source/blender/bmesh/intern/bmesh_queries.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c
index 3c2a85e..fdad93e 100644
--- a/source/blender/bmesh/intern/bmesh_construct.c
+++ b/source/blender/bmesh/intern/bmesh_construct.c
@@ -46,10 +46,29 @@
 
 #define SELECT 1
 
+
+/**
+ * Fill in a vertex array from an edge array.
+ *
+ * \returns false if any verts aren't found.
+ */
+bool BM_verts_from_edges(BMVert **vert_arr, BMEdge **edge_arr, const int len)
+{
+	int i, i_prev = len - 1;
+	for (i = 0; i < len; i++) {
+		vert_arr[i] = BM_edge_share_vert(edge_arr[i_prev], edge_arr[i]);
+		if (vert_arr[i] == NULL) {
+			return false;
+		}
+		i_prev = i;
+	}
+	return true;
+}
+
 /**
  * Fill in an edge array from a vertex array (connected polygon loop).
  *
- * \returns false if any edges aren't found .
+ * \returns false if any edges aren't found.
  */
 bool BM_edges_from_verts(BMEdge **edge_arr, BMVert **vert_arr, const int len)
 {
diff --git a/source/blender/bmesh/intern/bmesh_construct.h b/source/blender/bmesh/intern/bmesh_construct.h
index ce8b8dd..06bc546 100644
--- a/source/blender/bmesh/intern/bmesh_construct.h
+++ b/source/blender/bmesh/intern/bmesh_construct.h
@@ -29,6 +29,8 @@
 
 struct BMAllocTemplate;
 
+bool BM_verts_from_edges(BMVert **vert_arr, BMEdge **edge_arr, const int len);
+
 bool BM_edges_from_verts(BMEdge **edge_arr, BMVert **vert_arr, const int len);
 void BM_edges_from_verts_ensure(BMesh *bm, BMEdge **edge_arr, BMVert **vert_arr, const int len);
 
diff --git a/source/blender/bmesh/intern/bmesh_queries.c b/source/blender/bmesh/intern/bmesh_queries.c
index 5ed8ab2..253fa95 100644
--- a/source/blender/bmesh/intern/bmesh_queries.c
+++ b/source/blender/bmesh/intern/bmesh_queries.c
@@ -2094,26 +2094,13 @@ bool BM_face_exists_multi_edge(BMEdge **earr, int len)
 {
 	BMVert **varr = BLI_array_alloca(varr, len);
 
-	bool ok;
-	int i, i_next;
-
 	/* first check if verts have edges, if not we can bail out early */
-	ok = true;
-	for (i = len - 1, i_next = 0; i_next < len; (i = i_next++)) {
-		if (!(varr[i] = BM_edge_share_vert(earr[i], earr[i_next]))) {
-			ok = false;
-			break;
-		}
-	}
-
-	if (ok == false) {
+	if (!BM_verts_from_edges(varr, earr, len)) {
 		BMESH_ASSERT(0);
 		return false;
 	}
 
-	ok = BM_face_exists_multi(varr, earr, len);
-
-	return ok;
+	return BM_face_exists_multi(varr, earr, len);
 }




More information about the Bf-blender-cvs mailing list