Fix crash in previous commit for objects that don't have a boundbox.
In that case, the object's center is used.
This commit is contained in:
@@ -555,14 +555,36 @@ void TargetSnapClosest(TransInfo *t)
|
|||||||
for(td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++)
|
for(td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++)
|
||||||
{
|
{
|
||||||
struct BoundBox *bb = object_get_boundbox(td->ob);
|
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 loc[3];
|
||||||
float dist;
|
float dist;
|
||||||
|
|
||||||
VECCOPY(loc, bb->vec[j]);
|
VECCOPY(loc, td->center);
|
||||||
Mat4MulVecfl(td->ext->obmat, loc);
|
|
||||||
|
|
||||||
dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint);
|
dist = t->tsnap.distance(t, loc, t->tsnap.snapPoint);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user