const Vector &CECollisionProperty::WorldToCollisionSpace( const Vector &in, Vector *pResult ) const { if ( !IsBoundsDefinedInEntitySpace() || ( GetCollisionAngles() == vec3_angle ) ) { VectorSubtract( in, GetCollisionOrigin(), *pResult ); } else { VectorITransform( in, CollisionToWorldTransform(), *pResult ); } return *pResult; }
//----------------------------------------------------------------------------- // Transforms an AABB measured in entity space to a box that surrounds it in world space //----------------------------------------------------------------------------- void CCollisionProperty::CollisionAABBToWorldAABB( const Vector &entityMins, const Vector &entityMaxs, Vector *pWorldMins, Vector *pWorldMaxs ) const { if ( !IsBoundsDefinedInEntitySpace() || (GetCollisionAngles() == vec3_angle) ) { VectorAdd( entityMins, GetCollisionOrigin(), *pWorldMins ); VectorAdd( entityMaxs, GetCollisionOrigin(), *pWorldMaxs ); } else { TransformAABB( CollisionToWorldTransform(), entityMins, entityMaxs, *pWorldMins, *pWorldMaxs ); } }
//----------------------------------------------------------------------------- // Transforms a point in OBB space to world space //----------------------------------------------------------------------------- const Vector &CECollisionProperty::CollisionToWorldSpace( const Vector &in, Vector *pResult ) const { // Makes sure we don't re-use the same temp twice if ( !IsBoundsDefinedInEntitySpace() || ( GetCollisionAngles() == vec3_angle ) ) { VectorAdd( in, GetCollisionOrigin(), *pResult ); } else { VectorTransform( in, CollisionToWorldTransform(), *pResult ); } return *pResult; }