[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51896] trunk/blender/source/blender/ editors/space_view3d/view3d_snap.c: fix [#33051] view selected (focus) bug

Campbell Barton ideasman42 at gmail.com
Mon Nov 5 11:43:54 CET 2012


Revision: 51896
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51896
Author:   campbellbarton
Date:     2012-11-05 10:43:52 +0000 (Mon, 05 Nov 2012)
Log Message:
-----------
fix [#33051] view selected (focus) bug

this was really a feature request!, previously the first cage vertex was used no matter what, but no the code checks to use the closest vertex to the original.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_snap.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_snap.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_snap.c	2012-11-05 10:33:59 UTC (rev 51895)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_snap.c	2012-11-05 10:43:52 UTC (rev 51896)
@@ -214,9 +214,22 @@
 	TransVert *tv = userdata[1];
 	BMVert *eve = EDBM_vert_at_index(em, index);
 	
-	if (BM_elem_index_get(eve) != TM_INDEX_SKIP && !(tv[BM_elem_index_get(eve)].flag & TX_VERT_USE_MAPLOC)) {
-		copy_v3_v3(tv[BM_elem_index_get(eve)].maploc, co);
-		tv[BM_elem_index_get(eve)].flag |= TX_VERT_USE_MAPLOC;
+	if (BM_elem_index_get(eve) != TM_INDEX_SKIP) {
+		tv = &tv[BM_elem_index_get(eve)];
+
+		/* be clever, get the closest vertex to the original,
+		 * behaves most logically when the mirror modifier is used for eg [#33051]*/
+		if ((tv->flag & TX_VERT_USE_MAPLOC) == 0) {
+			/* first time */
+			copy_v3_v3(tv->maploc, co);
+			tv->flag |= TX_VERT_USE_MAPLOC;
+		}
+		else {
+			/* find best location to use */
+			if (len_squared_v3v3(eve->co, co) < len_squared_v3v3(eve->co, tv->maploc)) {
+				copy_v3_v3(tv->maploc, co);
+			}
+		}
 	}
 }
 




More information about the Bf-blender-cvs mailing list