[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44691] trunk/blender/source/blender/ editors/mesh/bmesh_tools.c: single vertex rip wasn' t finishing with the best vertex selected.

Campbell Barton ideasman42 at gmail.com
Wed Mar 7 03:47:05 CET 2012


Revision: 44691
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44691
Author:   campbellbarton
Date:     2012-03-07 02:46:58 +0000 (Wed, 07 Mar 2012)
Log Message:
-----------
single vertex rip wasn't finishing with the best vertex selected.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/bmesh_tools.c

Modified: trunk/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-03-07 01:14:20 UTC (rev 44690)
+++ trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-03-07 02:46:58 UTC (rev 44691)
@@ -2510,12 +2510,41 @@
 	BMBVH_FreeBVH(bvhtree);
 #endif
 
-	/* de-select one of the sides */
-	BMO_slot_buffer_hflag_disable(bm, &bmop, side ? "edgeout1" : "edgeout2", BM_ELEM_SELECT, BM_EDGE, TRUE);
+	if (singlesel) {
+		BMVert *v_best = NULL;
 
-	if (ripvert) {
+		/* not good enough! - original vert may not be attached to the closest edge */
+#if 0
+		EDBM_flag_disable_all(em, BM_ELEM_SELECT);
 		BM_elem_select_set(bm, ripvert, TRUE);
+#else
+
+		dist = FLT_MAX;
+		BM_ITER(v, &iter, em->bm, BM_VERTS_OF_MESH, NULL) {
+			if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
+		        /* disable by default, re-enable winner at end */
+				BM_elem_select_set(bm, v, FALSE);
+
+				BM_ITER(e, &eiter, bm, BM_EDGES_OF_VERT, v) {
+					d = mesh_rip_edgedist(ar, projectMat, e->v1->co, e->v2->co, fmval);
+					if (d < dist) {
+						v_best = v;
+						dist = d;
+					}
+				}
+			}
+		}
+
+		if (v_best) {
+			BM_elem_select_set(bm, v_best, TRUE);
+		}
+#endif
+
 	}
+	else {
+		/* de-select one of the sides */
+		BMO_slot_buffer_hflag_disable(bm, &bmop, side ? "edgeout1" : "edgeout2", BM_ELEM_SELECT, BM_EDGE, TRUE);
+	}
 
 	EDBM_selectmode_flush(em);
 




More information about the Bf-blender-cvs mailing list