diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-12-09 22:26:00 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-12-09 22:57:37 +0300 |
commit | 17f0a01a5664b37f7ae26fef13ffed68794cc066 (patch) | |
tree | 7f6764bef5f034c38023bb402e48b33cc8b9fce9 /source/blender/editors/mesh | |
parent | e77b25fabb5c8a7957f2038fcc180b1eec6ae89a (diff) |
Correct last commit checking knife edges
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r-- | source/blender/editors/mesh/editmesh_knife.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index f7711929a1b..6b68eef6e49 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -1476,16 +1476,19 @@ static void knife_find_line_hits(KnifeTool_OpData *kcd) for (val = BLI_smallhash_iternew(&kfes, &hiter, (uintptr_t *)&kfe); val; val = BLI_smallhash_iternext(&hiter, (uintptr_t *)&kfe)) { + int kfe_verts_in_cut; /* if we intersect both verts, don't attempt to intersect the edge */ - if (BLI_smallhash_lookup(&kfvs, (intptr_t)kfe->v1) && - BLI_smallhash_lookup(&kfvs, (intptr_t)kfe->v2)) - { + + kfe_verts_in_cut = (BLI_smallhash_lookup(&kfvs, (intptr_t)kfe->v1) != NULL) + + (BLI_smallhash_lookup(&kfvs, (intptr_t)kfe->v2) != NULL); + + if (kfe_verts_in_cut == 2) { continue; } knife_project_v2(kcd, kfe->v1->cageco, se1); knife_project_v2(kcd, kfe->v2->cageco, se2); - isect_kind = isect_seg_seg_v2_point(s1, s2, se1, se2, sint); + isect_kind = (kfe_verts_in_cut) ? -1 : isect_seg_seg_v2_point(s1, s2, se1, se2, sint); if (isect_kind == -1) { /* isect_seg_seg_v2 doesn't do tolerance test around ends of s1-s2 */ closest_to_line_segment_v2(sint, s1, se1, se2); |