00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _MATERIAL_H
00013 #define _MATERIAL_H
00014
00015 #include "Template.h"
00016
00017
00018 class CSLTexture2D;
00019
00020
00024 class XSIEXPORT CSLBaseMaterial
00025 : public CSLTemplate
00026 {
00027 public:
00028 virtual SI_Error Synchronize();
00029
00030 virtual SI_Error GetCapabilities ( SI_Int in_iFeature, SI_Void* out_pValue );
00031
00032 protected:
00033
00039 CSLBaseMaterial(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00040
00041 private:
00042 void *m_pReserved;
00043 };
00044
00048 class XSIEXPORT CSLMaterial
00049 : public CSLBaseMaterial
00050 {
00051 public:
00055 enum EShadingModel
00056 {
00057 CONSTANT,
00058 LAMBERT,
00059 PHONG,
00060 BLINN,
00061 SHADOW_OBJECT,
00062 VERTEX_COLOR,
00063 };
00064
00070 CSLMaterial(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00071
00074 virtual ~CSLMaterial();
00075
00079 CSIBCColorf GetAmbientColor();
00080
00085 SI_Void SetAmbientColor(CSIBCColorf &in_rColor);
00086
00090 CSIBCColorf GetDiffuseColor();
00091
00096 SI_Void SetDiffuseColor(CSIBCColorf &in_rColor);
00097
00101 CSIBCColorf GetEmissiveColor();
00102
00107 SI_Void SetEmissiveColor(CSIBCColorf &in_rColor);
00108
00112 EShadingModel GetShadingModel();
00113
00118 SI_Void SetShadingModel(EShadingModel in_Value);
00119
00123 CSIBCColorf GetSpecularColor();
00124
00129 SI_Void SetSpecularColor(CSIBCColorf &in_rColor);
00130
00134 SI_Float GetSpecularDecay();
00135
00140 SI_Void SetSpecularDecay(SI_Float in_fValue);
00141
00145 CSLTexture2D* Texture2D();
00146
00150 CSLTexture2D* CreateTexture2D();
00151
00155 SI_Error DestroyTexture2D();
00156
00157 CSLTexture2D* ConnectTexture2D(CSLTexture2D* in_pNewTexture2D);
00158
00159 virtual SI_Error Synchronize();
00160 virtual ETemplateType Type();
00161 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00162 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00163
00164 CSLColorRGBAProxy* GetDiffuseColorProxy(){ return &m_DiffuseColor;};
00165 CSLFloatProxy* GetSpecularDecayProxy(){ return &m_SpecularDecay;};
00166 CSLColorRGBProxy* GetSpecularColorProxy(){ return &m_SpecularColor;};
00167 CSLColorRGBProxy* GetEmissiveColorProxy(){ return &m_EmissiveColor;};
00168 CSLEnumProxy<EShadingModel, VERTEX_COLOR>* GetShadingModelProxy(){ return &m_ShadingModel;};
00169 CSLColorRGBProxy * GetAmbientColorProxy(){ return &m_AmbientColor;};
00170
00171 private:
00172 CSLColorRGBAProxy m_DiffuseColor;
00173 CSLFloatProxy m_SpecularDecay;
00174 CSLColorRGBProxy m_SpecularColor;
00175 CSLColorRGBProxy m_EmissiveColor;
00176 CSLEnumProxy<EShadingModel, VERTEX_COLOR> m_ShadingModel;
00177 CSLColorRGBProxy m_AmbientColor;
00178 CSLTexture2D *m_pTexture2D;
00179
00180 void *m_pReserved;
00181 };
00182
00183 #endif