00001 #ifndef MATERIAL_H_ 00002 #define MATERIAL_H_ 00003 #include <iostream> 00004 #include <cstdlib> 00005 #include <GL/glut.h> 00006 #include "Textures.h" 00007 #include "Vector.h" 00008 using std::cout; 00009 #define material new Material 00010 00016 class Material { 00017 private: 00021 static Material* defaultMat; 00022 00026 static Material* fishMat; 00027 00031 static Material* lastUsed; 00032 00036 static bool enabled; 00037 00041 Color* diffuseColor; 00042 00046 Color* ambientColor; 00047 00051 Color* emissiveColor; 00052 00056 Color* specularColor; 00057 00061 double shininess; 00062 00066 int texture; 00067 00071 static Material* createDefaultMaterial(); 00072 00076 static Material* createFishMaterial(); 00077 00078 public: 00083 Material(); 00084 00088 static Material* getDefaultMaterial(); 00089 00093 static Material* getFishMaterial(); 00094 00098 static void setEnabled(bool enabled); 00099 00103 Color* getAmbientColor(); 00104 00108 Color* getDiffuseColor(); 00109 00113 Color* getEmissiveColor(); 00114 00118 virtual void setDiffuseColor(Color* c); 00119 00123 virtual void setAmbientColor(Color* c); 00124 00128 virtual void setEmissiveColor(Color* c); 00129 00133 virtual void setspecularColor(Color* c); 00134 00138 virtual void setShininess(double d); 00139 00143 virtual void setTexture(int t); 00144 00148 virtual void select(); 00149 00153 virtual ~Material(); 00154 }; 00155 00156 #endif /*MATERIAL_H_*/