00001 #ifndef X3DTK_X3D_MATERIAL_H 00002 #define X3DTK_X3D_MATERIAL_H 00003 00004 #include "X3DTypes.h" 00005 #include "X3D_X3DMaterialNode.h" 00006 00007 namespace X3DTK { 00008 namespace X3D { 00009 00018 class Material : public X3DMaterialNode 00019 { 00020 public: 00022 Material(); 00024 Material(const SFFloat &ambientIntensity, 00025 const SFColor &diffuseColor, 00026 const SFColor &emissiveColor, 00027 const SFFloat &shininess, 00028 const SFColor &specularColor, 00029 const SFFloat &transparency); 00031 virtual SFAbstractNode clone() const; 00033 virtual ~Material(); 00034 00036 void setAmbientIntensity(const SFFloat &ambientIntensity); 00038 void setDiffuseColor(const SFColor &diffuseColor); 00040 void setEmissiveColor(const SFColor &emissiveColor); 00042 void setShininess(const SFFloat &shininess); 00044 void setSpecularColor(const SFColor &specularColor); 00046 void setTransparency(const SFFloat &transparency); 00047 00049 inline const SFFloat &getAmbientIntensity() const {return _ambientIntensity;}; 00051 inline const SFColor &getDiffuseColor() const {return _diffuseColor;}; 00053 inline const SFColor &getEmissiveColor() const {return _emissiveColor; }; 00055 inline const SFFloat &getShininess() const {return _shininess;}; 00057 inline const SFColor &getSpecularColor() const {return _specularColor;}; 00059 inline const SFFloat &getTransparency() const {return _transparency;}; 00060 00062 virtual void load(const X3DFileElement *element); 00064 virtual SFString &write(SFString &output) const; 00065 00066 protected: 00068 Material(const Material &M); 00069 00070 private: 00072 SFFloat _ambientIntensity; 00074 SFColor _diffuseColor; 00076 SFColor _emissiveColor; 00078 SFFloat _shininess; 00080 SFColor _specularColor; 00082 SFFloat _transparency; 00083 }; 00084 00085 } 00086 } 00087 00088 #endif