#ifndef __INTERSECTABLE_H #define __INTERSECTABLE_H #include "AxisAlignedBox3.h" #include "Pvs.h" class Intersectable { public: static int mailID; int mailbox; KdPvs mKdPvs; enum { MESH_INSTANCE, TRANSFORMED_MESH_INSTANCE, SPHERE }; Intersectable():mailbox(0) {} void Mail() { mailbox = mailID; } static void NewMail() { mailID++; } bool Mailed() const { return mailbox == mailID; } virtual AxisAlignedBox3 GetBox() = 0; virtual int CastRay(Ray &ray) = 0; virtual bool IsConvex() = 0; virtual bool IsWatertight() = 0; virtual float IntersectionComplexity() = 0; virtual int Type() const = 0; virtual void GetRandomSurfacePoint(Vector3 &point, Vector3 &normal) = 0; }; #endif