00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _MATERIALLIBRARY_H 00015 #define _MATERIALLIBRARY_H 00016 00017 #include "Template.h" 00018 00019 // Forward declaration 00020 class CSLBaseMaterial; 00021 class CSLMaterial; 00022 class CSLXSIMaterial; 00023 00024 00030 class XSIEXPORT CSLMaterialLibrary 00031 : public CSLTemplate 00032 { 00033 public: 00034 CSLMaterialLibrary(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00035 virtual ~CSLMaterialLibrary(); 00036 00040 CSLMaterial* AddMaterial(); 00041 00045 virtual CSLXSIMaterial* AddXSIMaterial(); 00046 00050 SI_Error ClearMaterials(); 00051 00055 CSLBaseMaterial** GetMaterialList(); 00056 00060 SI_Int GetMaterialCount(); 00061 00066 SI_Error RemoveMaterial(SI_Int in_nIndex); 00067 00072 SI_Error RemoveMaterial(CSLBaseMaterial *in_pMaterial); 00073 00074 CSLBaseMaterial* FindMaterial( const SI_Char* in_szName ); 00075 00076 CSLBaseMaterial* ConnectMaterial(CSLBaseMaterial* in_pNewMaterial); 00077 00078 virtual SI_Error Synchronize(); 00079 00083 virtual ETemplateType Type(); 00084 00085 protected: 00086 CSIBCArray<CSLBaseMaterial *> m_Materials; 00087 00088 private: 00089 void *m_pReserved; // reserved for future extension 00090 }; 00091 00092 #endif