diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-05-11 21:39:01 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-05-11 21:39:01 +0300 |
commit | 1b003511be5c8a048ed376f8dec9372b7b1b86fb (patch) | |
tree | 29c45ef29d6147f1f599229c52d4ced0159cccd1 /source/blender | |
parent | 674bf2fe58bc43cbb82098ec504960c008e8c9fe (diff) |
BMesh: boundary walker, skip non-manifold loops
Instead of setting an exception, treat non-manifold edges as boundaries.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_walkers_impl.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c index 627f8358410..36bbdde311c 100644 --- a/source/blender/bmesh/intern/bmesh_walkers_impl.c +++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c @@ -711,13 +711,6 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker) e = l->e; v = BM_edge_other_vert(e, iwalk->lastv); - - if (!BM_vert_is_manifold(v)) { - BMW_reset(walker); - BMO_error_raise(walker->bm, NULL, BMERR_WALKER_FAILED, - "Non-manifold vert while searching region boundary"); - return NULL; - } /* pop off current state */ BMW_state_remove(walker); @@ -726,7 +719,7 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker) while (1) { l = BM_loop_other_edge_loop(l, v); - if (l != l->radial_next) { + if (BM_loop_is_manifold(l)) { l = l->radial_next; f = l->f; e = l->e; @@ -737,6 +730,7 @@ static void *bmw_IslandboundWalker_step(BMWalker *walker) } } else { + /* treat non-manifold edges as boundaries */ f = l->f; e = l->e; break; |