00001 00005 #ifndef Object_h 00006 #define Object_h 00007 00008 class BoundingBox; 00009 class Color; 00010 class HitRecord; 00011 class Ray; 00012 class RenderContext; 00013 00014 class Object { 00015 public: 00016 Object(); 00017 virtual ~Object(); 00018 00019 virtual void preprocess(); 00020 virtual void getBounds(BoundingBox& bbox) const = 0; 00021 virtual void intersect(HitRecord& hit, const RenderContext& context, const Ray& ray) const = 0; 00022 00023 private: 00024 Object(const Object&); 00025 Object& operator=(const Object&); 00026 }; 00027 00028 #endif 00029