Example #1
0
bool Ellipsoid::SweepAgainst( const CollisionMesh& m, const Vector& v, const AABB& SweepAABB, CollisionInfo* const pInfo /*= NULL*/ ) const
{
	CollisionInfo Info;
	CollisionInfo MinInfo;
	if( pInfo )
	{
		Info.CopyInParametersFrom( *pInfo );
	}
	for( uint i = 0; i < m.m_NumTris; ++i )
	{
		if( SweepAgainst( m.m_Tris[i], v, SweepAABB, &Info ) )
		{
			if( Info.m_HitT < MinInfo.m_HitT || !MinInfo.m_Collision )
			{
				MinInfo = Info;
			}
		}
	}
	if( MinInfo.m_Collision )
	{
		if( pInfo )
		{
			pInfo->CopyOutParametersFrom( MinInfo );
		}
		return true;
	}
	return false;
}