From 39012146e142bf400c7140d90ecfd27c45b589ca Mon Sep 17 00:00:00 2001 From: Howard Trickey Date: Sun, 8 Nov 2020 08:39:01 -0500 Subject: Fix T81651, exact boolean modifier incorrect if operand hidden. The code was trying to ignore hidden geometry when doing boolean, which is correct when used as a tool, but not when a modifier. Added a "keep_hidden" argument to bmesh_boolean to distinguish the two cases. Also fixed a bug when the tool is used with hidden geometry that is attached to unhidden geometry that is deleted by the operation. --- source/blender/modifiers/intern/MOD_boolean.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source/blender/modifiers') diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 1cf57669eb1..7fea06ba955 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -380,7 +380,8 @@ static void BMD_mesh_intersection(BMesh *bm, #endif if (use_exact) { - BM_mesh_boolean(bm, looptris, tottri, bm_face_isect_pair, NULL, 2, use_self, bmd->operation); + BM_mesh_boolean( + bm, looptris, tottri, bm_face_isect_pair, NULL, 2, use_self, false, bmd->operation); } else { BM_mesh_intersect(bm, @@ -543,7 +544,7 @@ static Mesh *collection_boolean_exact(BooleanModifierData *bmd, BM_mesh_elem_index_ensure(bm, BM_FACE); BM_mesh_boolean( - bm, looptris, tottri, bm_face_isect_nary, shape, num_shapes, true, bmd->operation); + bm, looptris, tottri, bm_face_isect_nary, shape, num_shapes, true, false, bmd->operation); result = BKE_mesh_from_bmesh_for_eval_nomain(bm, NULL, mesh); BM_mesh_free(bm); -- cgit v1.2.3