[Bf-blender-cvs] [06bd7b7] bmesh-boolean-experiment: Fix for booleans with edges overlapping faces exactly
Campbell Barton
noreply at git.blender.org
Fri Dec 4 01:47:38 CET 2015
Commit: 06bd7b70fba132f7ad353731e50b24ecc8b6c6d1
Author: Campbell Barton
Date: Fri Dec 4 11:40:25 2015 +1100
Branches: bmesh-boolean-experiment
https://developer.blender.org/rB06bd7b70fba132f7ad353731e50b24ecc8b6c6d1
Fix for booleans with edges overlapping faces exactly
===================================================================
M source/blender/bmesh/tools/bmesh_intersect.c
===================================================================
diff --git a/source/blender/bmesh/tools/bmesh_intersect.c b/source/blender/bmesh/tools/bmesh_intersect.c
index 639071d..b7a9e15 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -483,6 +483,10 @@ static BMVert *bm_isect_edge_tri(
static bool bm_loop_filter_fn(const BMLoop *l, void *UNUSED(user_data))
{
+ if (BM_elem_flag_test(l->e, BM_ELEM_TAG)) {
+ return false;
+ }
+
if (l->radial_next != l) {
BMLoop *l_iter = l->radial_next;
const char hflag_test = BM_ELEM_DRAW; /* XXX, set in MOD_boolean.c */
@@ -1566,6 +1570,16 @@ bool BM_mesh_intersect(
BM_mesh_edgesplit(bm, false, true, false);
}
+ else if (boolean_mode != BOOLEAN_NONE) {
+ GSetIterator gs_iter;
+
+ /* no need to clear for boolean */
+
+ GSET_ITER (gs_iter, s.wire_edges) {
+ BMEdge *e = BLI_gsetIterator_getKey(&gs_iter);
+ BM_elem_flag_enable(e, BM_ELEM_TAG);
+ }
+ }
#else
(void)use_separate;
#endif /* USE_SEPARATE */
More information about the Bf-blender-cvs
mailing list