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>2012-03-30 12:43:47 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-30 12:43:47 +0400
commit0e972b6293e556da3716bdfa751b0b085455a111 (patch)
tree9ff6f724e21407f0a3275d4583d8b79ee94077fd /source/blender/bmesh/intern/bmesh_walkers_impl.c
parente0d94b724441ac30e8b99991bb73beb8e133d57b (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.c14
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;