Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoward Trickey <howard.trickey@gmail.com>2018-06-15 15:48:45 +0300
committerHoward Trickey <howard.trickey@gmail.com>2018-06-15 15:48:45 +0300
commitb84fad2ba3920f3e337dc9084a30f1ea38f39fc2 (patch)
treeb784b151bef27d2775d60f725e8aa3ae58579c69 /source/blender/bmesh/tools/bmesh_intersect.c
parent284e0ea756854e3d8388b2cd89666923975cbf10 (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/bmesh_intersect.c')
-rw-r--r--source/blender/bmesh/tools/bmesh_intersect.c8
1 files changed, 4 insertions, 4 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);
}