[Bf-blender-cvs] [03d4df9] bmesh-boolean-experiment: Disable dissolve (for intersect testing)

Campbell Barton noreply at git.blender.org
Thu Nov 26 00:37:08 CET 2015


Commit: 03d4df9cfd7bfd201ce8785a776cd7cbb5a3c00d
Author: Campbell Barton
Date:   Thu Nov 26 10:29:48 2015 +1100
Branches: bmesh-boolean-experiment
https://developer.blender.org/rB03d4df9cfd7bfd201ce8785a776cd7cbb5a3c00d

Disable dissolve (for intersect testing)

This causes errors splitting the mesh in some cases,
eventually would be good to use but disable for now.

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

M	source/blender/bmesh/tools/bmesh_intersect.c
M	source/blender/bmesh/tools/bmesh_intersect.h
M	source/blender/editors/mesh/editmesh_intersect.c
M	source/blender/modifiers/intern/MOD_boolean.c

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

diff --git a/source/blender/bmesh/tools/bmesh_intersect.c b/source/blender/bmesh/tools/bmesh_intersect.c
index 7fb6c50..f69a7b6 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -1021,7 +1021,7 @@ bool BM_mesh_intersect(
         BMesh *bm,
         struct BMLoop *(*looptris)[3], const int looptris_tot,
         int (*test_fn)(BMFace *f, void *user_data), void *user_data,
-        const bool use_self, const bool use_separate,
+        const bool use_self, const bool use_separate, const bool use_dissolve,
         const int boolean_mode,
         const float eps)
 {
@@ -1085,7 +1085,9 @@ bool BM_mesh_intersect(
 	        0);
 
 #ifdef USE_DISSOLVE
-	BM_mesh_elem_hflag_disable_all(bm, BM_EDGE | BM_VERT, BM_ELEM_TAG, false);
+	if (use_dissolve) {
+		BM_mesh_elem_hflag_disable_all(bm, BM_EDGE | BM_VERT, BM_ELEM_TAG, false);
+	}
 #endif
 
 #ifdef USE_DUMP
@@ -1288,7 +1290,7 @@ bool BM_mesh_intersect(
 
 	/* important to handle before edgenet */
 #ifdef USE_DISSOLVE
-	{
+	if (use_dissolve) {
 		/* first pass */
 		BMVert *(*splice_ls)[2];
 		STACK_DECLARE(splice_ls);
diff --git a/source/blender/bmesh/tools/bmesh_intersect.h b/source/blender/bmesh/tools/bmesh_intersect.h
index 543d8a8..c584fec 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.h
+++ b/source/blender/bmesh/tools/bmesh_intersect.h
@@ -29,7 +29,7 @@ bool BM_mesh_intersect(
         BMesh *bm,
         struct BMLoop *(*looptris)[3], const int looptris_tot,
         int (*test_fn)(BMFace *f, void *user_data), void *user_data,
-        const bool use_self, const bool use_separate,
+        const bool use_self, const bool use_separate, const bool use_dissolve,
         const int boolean_mode,
         const float eps);
 
diff --git a/source/blender/editors/mesh/editmesh_intersect.c b/source/blender/editors/mesh/editmesh_intersect.c
index 8f04a5a..34989df 100644
--- a/source/blender/editors/mesh/editmesh_intersect.c
+++ b/source/blender/editors/mesh/editmesh_intersect.c
@@ -123,7 +123,7 @@ static int edbm_intersect_exec(bContext *C, wmOperator *op)
 	        bm,
 	        em->looptris, em->tottri,
 	        test_fn, NULL,
-	        use_self, use_separate,
+	        use_self, use_separate, false,
 	        0,
 	        eps);
 
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c
index 877ab91..d6376d5 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -235,7 +235,7 @@ static DerivedMesh *applyModifier(
 				        bm,
 				        looptris, tottri,
 				        bm_face_isect_pair, &user_data,
-				        false, true,
+				        false, true, false,
 				        bmd->operation,
 				        FLT_EPSILON);




More information about the Bf-blender-cvs mailing list