class Circle;
class FakeLens;
+/// Base class for all "shapes" (i.e. collision primitives).
+/// This serves as an interface for game::Entity to double dispatch the
+/// collision detection algorithms.
class Shape {
public:
virtual ~Shape(void) { };
public:
+ /// Check if this shape overlaps the given and, if it does, write the
+ /// surface normal into given vector.
+ /// All shapes must override this method to dispatch to the specialized
+ /// version of Overlaps().
+ /// See AABB::Overlaps(const Shape &, Vector &normal) const for details.
virtual bool Overlaps(const Shape &, Vector &normal) const = 0;
virtual bool Overlaps(const AABB &, Vector &normal) const = 0;