[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