#pragma once // Forward declarations for classes that include each other namespace J3ML::Geometry { class Shape; class AABB2D; class AABB; class Capsule; class Frustum; class LineSegment; class Line; class OBB; class Plane; class Polygon; class Polyhedron; template class QuadTree; class Ray; class Shape; class Sphere; class Triangle; class Triangle2D; class TriangleMesh; } // Methods required by Geometry types namespace J3ML::Geometry { // Represents a segment along an axis, with the axis as a unit struct Interval { float min; float max; bool Intersects(const Interval& rhs) const; bool operator==(const Interval& rhs) const = default; }; } using namespace J3ML::Geometry;