he::IntersectResult CameraPerspective::intersect( const Bound& bound ) const { HIERARCHICAL_PROFILE(__HE_FUNCTION__); const Sphere& camSphereBound(m_Bound.getSphere()); const Cone& camConeBound(m_Bound.getCone()); const Frustum& frustumBound(m_Bound.getFrustum()); const Sphere& otherSphereBound(bound.getSphere()); // Fast sphere - sphere test { HIERARCHICAL_PROFILE("Sphere Test"); if (camSphereBound.intersectTest(otherSphereBound) == false) return IntersectResult_Outside; } { HIERARCHICAL_PROFILE("Cone Test"); // Fast cone - sphere test if (camConeBound.intersectTest(otherSphereBound) == false) return IntersectResult_Outside; } // sphere frustum test { HIERARCHICAL_PROFILE("Frustum Test"); switch(frustumBound.intersect(otherSphereBound)) { case IntersectResult_Outside: return IntersectResult_Outside; case IntersectResult_Inside: return IntersectResult_Inside; case IntersectResult_Intersecting: { HIERARCHICAL_PROFILE("Slow Frustum Test"); switch(frustumBound.intersect(bound.getAABB())) { case IntersectResult_Outside: return IntersectResult_Outside; case IntersectResult_Inside: return IntersectResult_Inside; case IntersectResult_Intersecting: return IntersectResult_Intersecting; } } break; } } LOG(LogType_ProgrammerAssert, "Should never get here"); return IntersectResult_Outside; }