[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