00001 00002 00003 00004 00005 // ChangeLog is at the implementation file. 00006 00007 #ifndef __VPMATERIAL_H 00008 #define __VPMATERIAL_H 00009 00010 #include "vptexture.h" 00011 #include "vpcolor.h" 00012 00017 00018 // FixMe: Texture still needs to be implemented. 00019 00020 class VPMaterial 00021 { 00022 public: 00023 // Public Methods 00024 VPMaterial(); 00025 VPMaterial(const VPMaterial& m); 00027 VPMaterial(const VPColor& c); 00028 VPMaterial(const VPTexture& t); 00030 VPMaterial(const VPColor& c, float spc, float amb, float ems, float shi); 00031 VPMaterial& operator=(const VPMaterial& m); 00033 void SetDiffuseColor(const VPColor& c) { color = c; } 00035 const VPColor& GetDiffuseColor() const { return color; } 00037 void SetSpecularColor(const VPColor& c) { specular = c; } 00039 void SetAmbientColor(const VPColor& c) { ambient = c; } 00041 void SetEmissiveColor(const VPColor& c) { emissive = c; } 00042 00044 00047 void SetShininess(float newValue) { shininess = newValue; } 00048 00051 bool DrawOGL() const; 00052 // Public Static Methods 00053 static const VPMaterial& LIGHT_PLASTIC_GRAY(); 00054 static const VPMaterial& DARK_PLASTIC_GRAY(); 00055 static const VPMaterial& PLASTIC_RED(); 00056 static const VPMaterial& PLASTIC_GREEN(); 00057 static const VPMaterial& PLASTIC_BLUE(); 00058 private: 00060 VPColor color; 00062 VPColor emissive; 00064 VPColor ambient; 00066 VPColor specular; 00067 VPTexture texture; 00069 float shininess; 00070 }; 00071 00072 #endif