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:
authorCampbell Barton <ideasman42@gmail.com>2016-05-11 21:39:01 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-05-11 21:39:01 +0300
commit1b003511be5c8a048ed376f8dec9372b7b1b86fb (patch)
tree29c45ef29d6147f1f599229c52d4ced0159cccd1 /source/blender/bmesh/intern/bmesh_walkers_impl.c
parent674bf2fe58bc43cbb82098ec504960c008e8c9fe (diff)
BMesh: boundary walker, skip non-manifold loops
Instead of setting an exception, treat non-manifold edges as boundaries.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_walkers_impl.c')
-rw-r--r--source/blender/bmesh/intern/bmesh_walkers_impl.c10
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;