nuclear@4: #ifndef MATERIAL_H_ nuclear@4: #define MATERIAL_H_ nuclear@4: nuclear@4: #include nuclear@4: #include nuclear@4: #include "color.h" nuclear@4: #include "texture.h" nuclear@4: nuclear@4: class MatAttrib { nuclear@4: private: nuclear@4: float value; nuclear@4: Color color; nuclear@4: Texture *map; nuclear@4: nuclear@4: public: nuclear@4: MatAttrib(); nuclear@4: explicit MatAttrib(const Color &color, Texture *tex = 0); nuclear@4: nuclear@4: void set_value(float val); nuclear@4: void set_color(const Color &col); nuclear@4: nuclear@4: void set_map(Texture *tex); nuclear@4: Texture *get_map() const; nuclear@4: nuclear@4: float get_value() const; nuclear@4: float get_value(float u, float v) const; nuclear@4: const Color &get_color() const; nuclear@4: Color get_color(float u, float v) const; nuclear@4: }; nuclear@4: nuclear@4: class Material { nuclear@4: private: nuclear@4: static MatAttrib def_attrib; nuclear@4: std::map attrib; nuclear@4: nuclear@4: public: nuclear@4: Material(); nuclear@4: nuclear@4: void set_attrib(const char *name, const Color &color, Texture *tex = 0); nuclear@4: MatAttrib &get_attrib(const char *name); nuclear@4: const MatAttrib &get_attrib(const char *name) const; nuclear@4: nuclear@4: float get_attrib_value(const char *name) const; nuclear@4: float get_attrib_value(const char *name, float u, float v) const; nuclear@4: Color get_attrib_color(const char *name) const; nuclear@4: Color get_attrib_color(const char *name, float u, float v) const; nuclear@4: }; nuclear@4: nuclear@4: nuclear@4: #endif // MATERIAL_H_