[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13226] trunk/blender/source/blender/src/ transform_snap.c: Fix crash in previous commit for objects that don' t have a boundbox.

Martin Poirier theeth at yahoo.com
Sun Jan 13 23:57:36 CET 2008


Revision: 13226
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13226
Author:   theeth
Date:     2008-01-13 23:57:36 +0100 (Sun, 13 Jan 2008)

Log Message:
-----------
Fix crash in previous commit for objects that don't have a boundbox.

In that case, the object's center is used.

Modified Paths:
--------------
    trunk/blender/source/blender/src/transform_snap.c

Modified: trunk/blender/source/blender/src/transform_snap.c
===================================================================
--- trunk/blender/source/blender/src/transform_snap.c	2008-01-13 22:51:48 UTC (rev 13225)
+++ trunk/blender/source/blender/src/transform_snap.c	2008-01-13 22:57:36 UTC (rev 13226)
@@ -555,14 +555,36 @@
 			for(td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++)
 			{
 				struct BoundBox *bb = object_get_boundbox(td->ob);
-				int j;
 				
-				for (j = 0; j < 8; j++) {
+				/* use boundbox if possible */
+				if (bb)
+				{
+					int j;
+					
+					for (j = 0; j < 8; j++) {
+						float loc[3];
+						float dist;
+						
+						VECCOPY(loc, bb->vec[j]);
+						Mat4MulVecfl(td->ext->obmat, loc);
+						
+						dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint);
+						
+						if (closest == NULL || fabs(dist) < fabs(t->tsnap.dist))
+						{
+							VECCOPY(t->tsnap.snapTarget, loc);
+							closest = td;
+							t->tsnap.dist = dist; 
+						}
+					}
+				}
+				/* use element center otherwise */
+				else
+				{
 					float loc[3];
 					float dist;
 					
-					VECCOPY(loc, bb->vec[j]);
-					Mat4MulVecfl(td->ext->obmat, loc);
+					VECCOPY(loc, td->center);
 					
 					dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint);
 					





More information about the Bf-blender-cvs mailing list