diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-30 12:43:47 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-30 12:43:47 +0400 |
commit | 0e972b6293e556da3716bdfa751b0b085455a111 (patch) | |
tree | 9ff6f724e21407f0a3275d4583d8b79ee94077fd /source/blender/bmesh/intern/bmesh_walkers_impl.c | |
parent | e0d94b724441ac30e8b99991bb73beb8e133d57b (diff) |
partial fix for [#30732] bmesh: loop select continues through hidden sections.
loop cut and edge ring select still need to be fixed.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_walkers_impl.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_walkers_impl.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c index 009b5e786c4..5275a988f7b 100644 --- a/source/blender/bmesh/intern/bmesh_walkers_impl.c +++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c @@ -517,7 +517,9 @@ static void *bmw_LoopWalker_step(BMWalker *walker) l = BM_face_other_vert_loop(owalk.f_hub, lwalk->lastv, v); nexte = BM_edge_exists(v, l->v); - if (!BLI_ghash_haskey(walker->visithash, nexte)) { + if (bmw_mask_check_edge(walker, nexte) && + !BLI_ghash_haskey(walker->visithash, nexte)) + { lwalk = BMW_state_add(walker); lwalk->cur = nexte; lwalk->lastv = v; @@ -579,7 +581,10 @@ static void *bmw_LoopWalker_step(BMWalker *walker) } if (l != NULL) { - if (l != e->l && !BLI_ghash_haskey(walker->visithash, l->e)) { + if (l != e->l && + bmw_mask_check_edge(walker, l->e) && + !BLI_ghash_haskey(walker->visithash, l->e)) + { if (!(owalk.is_boundary == FALSE && i != stopi)) { lwalk = BMW_state_add(walker); lwalk->cur = l->e; @@ -602,7 +607,10 @@ static void *bmw_LoopWalker_step(BMWalker *walker) v = i ? e->v2 : e->v1; BM_ITER(nexte, &eiter, walker->bm, BM_EDGES_OF_VERT, v) { - if ((nexte->l == NULL) && !BLI_ghash_haskey(walker->visithash, nexte)) { + if ((nexte->l == NULL) && + bmw_mask_check_edge(walker, nexte) && + !BLI_ghash_haskey(walker->visithash, nexte)) + { lwalk = BMW_state_add(walker); lwalk->cur = nexte; lwalk->lastv = v; |