[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45282] trunk/blender/source/blender: partial fix for [#30732] bmesh: loop select continues through hidden sections.

Campbell Barton ideasman42 at gmail.com
Fri Mar 30 10:44:04 CEST 2012


Revision: 45282
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45282
Author:   campbellbarton
Date:     2012-03-30 08:43:47 +0000 (Fri, 30 Mar 2012)
Log Message:
-----------
partial fix for [#30732] bmesh: loop select continues through hidden sections.

loop cut and edge ring select still need to be fixed.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
    trunk/blender/source/blender/editors/mesh/editmesh_select.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-03-30 06:45:13 UTC (rev 45281)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-03-30 08:43:47 UTC (rev 45282)
@@ -517,7 +517,9 @@
 			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 @@
 		}
 
 		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 @@
 			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;

Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c	2012-03-30 06:45:13 UTC (rev 45281)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c	2012-03-30 08:43:47 UTC (rev 45282)
@@ -900,7 +900,7 @@
 
 	BMW_init(&walker, bm, walkercode,
 	         BMW_MASK_NOP, BMW_MASK_NOP, BMW_MASK_NOP,
-	         BMW_FLAG_NOP, /* BMESH_TODO - should be BMW_FLAG_TEST_HIDDEN ? */
+	         BMW_FLAG_TEST_HIDDEN,
 	         BMW_NIL_LAY);
 	ele = BMW_begin(&walker, start);
 	for (; ele; ele = BMW_step(&walker)) {




More information about the Bf-blender-cvs mailing list