Added raycast against trianglemesh. Will be extended to object cast soon.
Thanks John Rowe (JMC)
This commit is contained in:
@@ -65,6 +65,41 @@ SIMD_FORCE_INLINE int btOutcode(const btVector3& p,const btVector3& halfExtent)
|
||||
}
|
||||
|
||||
|
||||
SIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom,
|
||||
const btVector3& rayInvDirection,
|
||||
const unsigned int raySign[3],
|
||||
const btVector3 bounds[2],
|
||||
btScalar& tmin,
|
||||
btScalar lambda_min,
|
||||
btScalar lambda_max)
|
||||
{
|
||||
btScalar tmax, tymin, tymax, tzmin, tzmax;
|
||||
tmin = (bounds[raySign[0]][0] - rayFrom[0]) * rayInvDirection[0];
|
||||
tmax = (bounds[1-raySign[0]][0] - rayFrom[0]) * rayInvDirection[0];
|
||||
tymin = (bounds[raySign[1]][1] - rayFrom[1]) * rayInvDirection[1];
|
||||
tymax = (bounds[1-raySign[1]][1] - rayFrom[1]) * rayInvDirection[1];
|
||||
|
||||
if ( (tmin > tymax) || (tymin > tmax) )
|
||||
return false;
|
||||
|
||||
if (tymin > tmin)
|
||||
tmin = tymin;
|
||||
|
||||
if (tymax < tmax)
|
||||
tmax = tymax;
|
||||
|
||||
tzmin = (bounds[raySign[2]][2] - rayFrom[2]) * rayInvDirection[2];
|
||||
tzmax = (bounds[1-raySign[2]][2] - rayFrom[2]) * rayInvDirection[2];
|
||||
|
||||
if ( (tmin > tzmax) || (tzmin > tmax) )
|
||||
return false;
|
||||
if (tzmin > tmin)
|
||||
tmin = tzmin;
|
||||
if (tzmax < tmax)
|
||||
tmax = tzmax;
|
||||
return ( (tmin < lambda_max) && (tmax > lambda_min) );
|
||||
}
|
||||
|
||||
SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom,
|
||||
const btVector3& rayTo,
|
||||
const btVector3& aabbMin,
|
||||
@@ -123,3 +158,4 @@ SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom,
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user