public override float? RayIntersectTest(Ray ray) { float? sphereTest = ray.Intersects(sphere); if (sphereTest != null) { ray.Position -= Position; Quaternion qInv = Quaternion.Inverse(QuaternionRotation); ray.Position = Vector3.Transform(ray.Position, qInv); ray.Direction = Vector3.Transform(ray.Direction, qInv); ray.Position += Position; return ray.Intersects(aabb); } return null; }