[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56784] trunk/blender/source/blender/bmesh /intern/bmesh_walkers_impl.c: fix for problem where edge loop select would select too many vertices ( extend selection too far),
Campbell Barton
ideasman42 at gmail.com
Tue May 14 06:55:22 CEST 2013
Revision: 56784
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56784
Author: campbellbarton
Date: 2013-05-14 04:55:21 +0000 (Tue, 14 May 2013)
Log Message:
-----------
fix for problem where edge loop select would select too many vertices (extend selection too far),
before & after: http://www.graphicall.org/ftp/ideasman42/edgeloop_select_fix.png
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c 2013-05-14 04:09:02 UTC (rev 56783)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c 2013-05-14 04:55:21 UTC (rev 56784)
@@ -428,6 +428,15 @@
*
* Starts at a tool-flagged edge and walks over the edge loop
*/
+
+/* utility function */
+static bool bm_loop_is_single(BMLoop *l)
+{
+ return ((BM_edge_is_boundary(l->e)) &&
+ (l->f->len != 4) &&
+ (BM_edge_is_boundary(l->next->e) || BM_edge_is_boundary(l->prev->e)));
+}
+
static void bmw_LoopWalker_begin(BMWalker *walker, void *data)
{
BMwLoopWalker *lwalk = NULL, owalk, *owalk_pt;
@@ -444,7 +453,7 @@
lwalk->cur = lwalk->start = e;
lwalk->lastv = lwalk->startv = v;
lwalk->is_boundary = BM_edge_is_boundary(e);
- lwalk->is_single = (vert_edge_count[0] == 2 && vert_edge_count[1] == 2);
+ lwalk->is_single = (lwalk->is_boundary && bm_loop_is_single(e->l));
/* could also check that vertex*/
if ((lwalk->is_boundary == false) &&
@@ -639,6 +648,10 @@
} while (true);
}
+ if (owalk.is_single == false && bm_loop_is_single(l)) {
+ l = NULL;
+ }
+
if (l != NULL) {
if (l != e->l &&
bmw_mask_check_edge(walker, l->e) &&
More information about the Bf-blender-cvs
mailing list