[Bf-blender-cvs] [58659fc] master: BMesh: Add BM_vert_pair_share_face_check

Campbell Barton noreply at git.blender.org
Thu Jul 17 00:27:48 CEST 2014


Commit: 58659fc20730dd1797ae588cfeb55611aecb792e
Author: Campbell Barton
Date:   Wed Jul 16 17:12:08 2014 +1000
https://developer.blender.org/rB58659fc20730dd1797ae588cfeb55611aecb792e

BMesh: Add BM_vert_pair_share_face_check

Use to assert if BM_vert_splice is used incorrectly

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

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

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

diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c
index 47de0441..70ae630 100644
--- a/source/blender/bmesh/intern/bmesh_core.c
+++ b/source/blender/bmesh/intern/bmesh_core.c
@@ -1960,6 +1960,8 @@ bool BM_vert_splice(BMesh *bm, BMVert *v, BMVert *v_target)
 		return false;
 	}
 
+	BLI_assert(BM_vert_pair_share_face_check(v, v_target) == false);
+
 	/* move all the edges from v's disk to vtarget's disk */
 	while ((e = v->e)) {
 
diff --git a/source/blender/bmesh/intern/bmesh_queries.c b/source/blender/bmesh/intern/bmesh_queries.c
index 606e93d..685e544 100644
--- a/source/blender/bmesh/intern/bmesh_queries.c
+++ b/source/blender/bmesh/intern/bmesh_queries.c
@@ -183,6 +183,26 @@ BMLoop *BM_loop_other_vert_loop(BMLoop *l, BMVert *v)
 }
 
 /**
+ * Check if verts share a face.
+ */
+bool BM_vert_pair_share_face_check(
+        BMVert *v_a, BMVert *v_b)
+{
+	if (v_a->e && v_b->e) {
+		BMIter iter;
+		BMFace *f;
+
+		BM_ITER_ELEM (f, &iter, v_a, BM_FACES_OF_VERT) {
+			if (BM_vert_in_face(f, v_b)) {
+				return true;
+			}
+		}
+	}
+
+	return false;
+}
+
+/**
  * Given 2 verts, find the smallest face they share and give back both loops.
  */
 BMFace *BM_vert_pair_share_face_by_len(
diff --git a/source/blender/bmesh/intern/bmesh_queries.h b/source/blender/bmesh/intern/bmesh_queries.h
index 21d2097..81d19cd 100644
--- a/source/blender/bmesh/intern/bmesh_queries.h
+++ b/source/blender/bmesh/intern/bmesh_queries.h
@@ -50,6 +50,8 @@ BMLoop *BM_loop_other_vert_loop(BMLoop *l, BMVert *v);
 BMLoop *BM_vert_step_fan_loop(BMLoop *l, BMEdge **e_step);
 BMLoop *BM_vert_find_first_loop(BMVert *v);
 
+bool    BM_vert_pair_share_face_check(
+        BMVert *v_a, BMVert *v_b) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
 BMFace *BM_vert_pair_share_face_by_len(
         BMVert *v_a, BMVert *v_b,
         BMLoop **r_l_a, BMLoop **r_l_b,




More information about the Bf-blender-cvs mailing list