00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00035 #ifndef __SO3MATERIAL_H__
00036 #define __SO3MATERIAL_H__
00037
00038 #include "../SCOLBasic/SO3Std.h"
00039 #include "../SCOLBasic/SO3DataScol.h"
00040
00041 namespace SO3
00042 {
00043
00044 class _SO3_Export SMaterial : public SData
00045 {
00046 public:
00047 protected:
00048 Ogre::MaterialPtr O3MaterialPtr;
00049 SScene* mScene;
00050 SWidget* associatedWidget;
00051 std::string mGroupName;
00052 private:
00053
00054 public:
00057 SMaterial(SScene* scene, std::string groupname, std::string materialName);
00058
00061 ~SMaterial();
00062
00065 SWidget* GetAssociatedWidget();
00066
00070 void SetAssociatedWidget(SWidget* newAssociatedWidget);
00071
00074 SScene* GetScene();
00075
00078 std::string GetGroupName();
00079
00082 Ogre::MaterialPtr getOgreMaterialPointer();
00083
00086 int GetNumTechniques();
00087
00090 int GetNumPasses(unsigned int technique);
00091
00094 int GetNumTextureUnitStates(unsigned int technique, unsigned int pass);
00095
00098 std::string GetTechniqueName(unsigned int technique);
00099
00102 int GetTechniqueIndexByName(std::string techname);
00103
00106 std::string GetPassName(unsigned int technique, unsigned int pass);
00107
00110 int GetPassIndexByName(unsigned int technique, std::string passname);
00111
00114 std::string GetTextureUnitName(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00115
00118 int GetTextureUnitIndexByName(unsigned int technique, unsigned int pass, std::string texname);
00119
00122 std::string GetTextureName(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00123
00127 void SetTextureUScroll(unsigned int technique, unsigned int pass, unsigned int textureUnit, float value);
00128
00131 float GetTextureUScroll(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00132
00136 void SetTextureVScroll(unsigned int technique, unsigned int pass, unsigned int textureUnit, float value);
00137
00140 float GetTextureVScroll(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00141
00145 void SetTextureUScale(unsigned int technique, unsigned int pass, unsigned int textureUnit, float value);
00146
00149 float GetTextureUScale(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00150
00154 void SetTextureVScale(unsigned int technique, unsigned int pass, unsigned int textureUnit, float value);
00155
00158 float GetTextureVScale(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00159
00163 void SetTextureRotate(unsigned int technique, unsigned int pass, unsigned int textureUnit, const float &radianAngle);
00164
00167 const float GetTextureRotate(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00168
00172 void SetTextureScrollAnimation(unsigned int technique, unsigned int pass, unsigned int textureUnit, float uSpeed, float vSpeed);
00173
00177 void SetTextureRotateAnimation(unsigned int technique, unsigned int pass, unsigned int textureUnit, float speed);
00178
00181 bool GetReceiveShadows();
00182
00185 void SetReceiveShadows(bool state);
00186
00189 bool GetLightingEnabled(unsigned int tech, unsigned int pass);
00190
00193 void SetLightingEnabled(unsigned int tech, unsigned int pass, bool state);
00194
00197 void SetLightingEnabled(bool state);
00198
00201 void SetAmbientColor(int color);
00202
00205 void SetAmbientColor(unsigned int tech, unsigned int pass, int color);
00206
00209 int GetAmbientColor(unsigned int tech, unsigned int pass);
00210
00213 void SetDiffuseColor(int color);
00214
00217 void SetDiffuseColor(unsigned int tech, unsigned int pass, int color);
00218
00221 int GetDiffuseColor(unsigned int tech, unsigned int pass);
00222
00225 void SetSpecularColor(int color);
00226
00229 void SetSpecularColor(unsigned int tech, unsigned int pass, int color);
00230
00233 int GetSpecularColor(unsigned int tech, unsigned int pass);
00234
00237 void SetSelfIlluminationColor(int color);
00238
00241 void SetSelfIlluminationColor(unsigned int tech, unsigned int pass, int color);
00242
00245 int GetSelfIlluminationColor(unsigned int tech, unsigned int pass);
00246
00249 void SetShininess(float value);
00250
00253 void SetShininess(unsigned int tech, unsigned int pass, float value);
00254
00257 float GetShininess(unsigned int tech, unsigned int pass);
00258
00261 void SetTexture(unsigned int tech, unsigned int pass, unsigned int textureUnit, STexture* texture);
00262
00265 STexture* GetTexture(unsigned int tech, unsigned int pass, unsigned int textureUnit);
00266
00267
00268 protected:
00271 Ogre::TextureUnitState* GetMaterialUnitState(unsigned int technique, unsigned int pass, unsigned int textureUnit);
00272
00275 Ogre::Pass* GetMaterialPass(unsigned int technique, unsigned int pass);
00276 private:
00280 SMaterial();
00281 };
00282
00283 }
00284
00285 #endif