[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