00001 #ifndef LIGHT_H 00002 #define LIGHT_H 00003 00004 00005 #include "Vec3f.h" 00006 #include "RGBAColor.h" 00007 00008 00009 class Scene; 00010 00011 00017 class Light 00018 { 00019 public: 00022 Light() 00023 : mScene(NULL) 00024 { 00025 } 00026 00029 virtual ~Light() 00030 { 00031 } 00032 00040 virtual RGBAColor illuminate(Vec3f & dir, const Vec3f & org, unsigned int index = 0) const = 0; 00041 00045 virtual unsigned int numberOfRays() const 00046 { 00047 return 1; 00048 } 00049 00052 virtual void setNumberOfRays(unsigned int) = 0; 00053 00056 void setScene(Scene * newScene) 00057 { 00058 assert(newScene); 00059 mScene = newScene; 00060 } 00061 00065 Scene * scene() 00066 { 00067 assert(mScene); 00068 return mScene; 00069 } 00070 00071 protected: 00073 Scene * mScene; 00074 }; 00075 00076 00077 #endif 00078