diff --git a/Engine/source/T3D/tsStatic.cpp b/Engine/source/T3D/tsStatic.cpp index 1474bf96d..f072528cd 100644 --- a/Engine/source/T3D/tsStatic.cpp +++ b/Engine/source/T3D/tsStatic.cpp @@ -702,41 +702,9 @@ bool TSStatic::castRay(const Point3F &start, const Point3F &end, RayInfo* info) if ( mCollisionType == Bounds ) { - F32 st, et, fst = 0.0f, fet = 1.0f; - F32 *bmin = &mObjBox.minExtents.x; - F32 *bmax = &mObjBox.maxExtents.x; - F32 const *si = &start.x; - F32 const *ei = &end.x; - - for ( U32 i = 0; i < 3; i++ ) - { - if (*si < *ei) - { - if ( *si > *bmax || *ei < *bmin ) - return false; - F32 di = *ei - *si; - st = ( *si < *bmin ) ? ( *bmin - *si ) / di : 0.0f; - et = ( *ei > *bmax ) ? ( *bmax - *si ) / di : 1.0f; - } - else - { - if ( *ei > *bmax || *si < *bmin ) - return false; - F32 di = *ei - *si; - st = ( *si > *bmax ) ? ( *bmax - *si ) / di : 0.0f; - et = ( *ei < *bmin ) ? ( *bmin - *si ) / di : 1.0f; - } - if ( st > fst ) fst = st; - if ( et < fet ) fet = et; - if ( fet < fst ) - return false; - bmin++; bmax++; - si++; ei++; - } - - info->normal = start - end; - info->normal.normalizeSafe(); - getTransform().mulV( info->normal ); + F32 fst; + if (!mObjBox.collideLine(start, end, &fst, &info->normal)) + return false; info->t = fst; info->object = this;