00001 00002 #ifndef Y_OBJECT3D_H 00003 #define Y_OBJECT3D_H 00004 00005 #include <yafray_config.h> 00006 00007 //#include "primitive.h" 00008 #include "matrix4.h" 00009 00010 #include <vector> 00011 #include <map> 00012 00013 __BEGIN_YAFRAY 00014 00015 class light_t; 00016 class primitive_t; 00017 class surfacePoint_t; 00018 00019 class YAFRAYCORE_EXPORT object3d_t 00020 { 00021 public: 00022 object3d_t(): light(0), visible(true) {} 00025 virtual int numPrimitives() const = 0; 00028 virtual int getPrimitives(const primitive_t **prims) const = 0; 00031 virtual int evalVMap(const surfacePoint_t &sp, unsigned int ID, float *val) const { return false; } 00033 virtual void setLight(const light_t *l){ light=l; } 00035 virtual bool canSample() { return false; } 00037 virtual bool enableSampling() { return false; } 00039 virtual void sample(float s1, float s2, point3d_t &p, vector3d_t &n) const {}; 00040 void setVisibility(bool v) { visible = v; } 00041 bool isVisible() const { return visible; } 00042 virtual ~object3d_t(){}; 00043 protected: 00044 const light_t *light; 00045 bool visible; 00046 }; 00047 00048 00049 00052 class primObject_t : public object3d_t 00053 { 00054 public: 00055 primObject_t(primitive_t *p): prim(p) { }; 00056 virtual int numPrimitives() const { return 1; } 00057 virtual int getPrimitives(const primitive_t **prims) const{ *prims = prim; return 1; } 00058 private: 00059 primitive_t *prim; 00060 }; 00061 00062 __END_YAFRAY 00063 00064 #endif // Y_OBJECT3D_H
1.6.1