diff options
author | Howard Trickey <howard.trickey@gmail.com> | 2018-06-15 15:48:45 +0300 |
---|---|---|
committer | Howard Trickey <howard.trickey@gmail.com> | 2018-06-15 15:48:45 +0300 |
commit | b84fad2ba3920f3e337dc9084a30f1ea38f39fc2 (patch) | |
tree | b784b151bef27d2775d60f725e8aa3ae58579c69 /source/blender/bmesh/tools | |
parent | 284e0ea756854e3d8388b2cd89666923975cbf10 (diff) |
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).
Diffstat (limited to 'source/blender/bmesh/tools')
-rw-r--r-- | source/blender/bmesh/tools/bmesh_intersect.c | 8 | ||||
-rw-r--r-- | source/blender/bmesh/tools/bmesh_intersect.h | 2 |
2 files changed, 5 insertions, 5 deletions
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); } diff --git a/source/blender/bmesh/tools/bmesh_intersect.h b/source/blender/bmesh/tools/bmesh_intersect.h index 51926a01710..82910a5df80 100644 --- a/source/blender/bmesh/tools/bmesh_intersect.h +++ b/source/blender/bmesh/tools/bmesh_intersect.h @@ -30,7 +30,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); enum { |