From b84fad2ba3920f3e337dc9084a30f1ea38f39fc2 Mon Sep 17 00:00:00 2001 From: Howard Trickey Date: Fri, 15 Jun 2018 08:48:45 -0400 Subject: Fix T55490, intersect two triangles fails. Need to use the 'use_partial_connect' option in island connect, so changed signatures of various functions to pass that into and then down from BM_mesh_intersect (making true for intersect, false for boolean). Then fix bm_face_split_edgenet_partial_connect to work when input edges are not necessarily wire, but at least not in the face they are being connected in. That caused generalization of core BM_vert_separate_hflag_wire (which is only used in this one place in all Blender). --- source/blender/bmesh/tools/bmesh_intersect.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to '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 acadb663810..88467e60dc0 100644 --- a/source/blender/bmesh/tools/bmesh_intersect.c +++ b/source/blender/bmesh/tools/bmesh_intersect.c @@ -243,7 +243,7 @@ static void face_edges_add( #ifdef USE_NET static void face_edges_split( BMesh *bm, BMFace *f, struct LinkBase *e_ls_base, - bool use_island_connect, + bool use_island_connect, bool use_partial_connect, MemArena *mem_arena_edgenet) { uint i; @@ -268,7 +268,7 @@ static void face_edges_split( if (BM_face_split_edgenet_connect_islands( bm, f, edge_arr, edge_arr_len, - false, + use_partial_connect, mem_arena_edgenet, &edge_arr_holes, &edge_arr_holes_len)) { @@ -986,7 +986,7 @@ bool BM_mesh_intersect( 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_dissolve, const bool use_island_connect, - const bool use_edge_tag, const int boolean_mode, + const bool use_partial_connect, const bool use_edge_tag, const int boolean_mode, const float eps) { struct ISectState s; @@ -1501,7 +1501,7 @@ bool BM_mesh_intersect( BLI_assert(BM_elem_index_get(f) == f_index); - face_edges_split(bm, f, e_ls_base, use_island_connect, mem_arena_edgenet); + face_edges_split(bm, f, e_ls_base, use_island_connect, use_partial_connect, mem_arena_edgenet); BLI_memarena_clear(mem_arena_edgenet); } -- cgit v1.2.3