00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _GLOBALMATERIAL_H 00015 #define _GLOBALMATERIAL_H 00016 00017 #include "Template.h" 00018 00019 // Forward declaration 00020 class CSLBaseMaterial; 00021 00027 class XSIEXPORT CSLGlobalMaterial 00028 : public CSLTemplate 00029 { 00030 public: 00032 enum EPropagationType 00033 { 00034 SI_BRANCH, 00035 SI_NODE, 00036 SI_INHERITED 00037 }; 00038 00046 CSLGlobalMaterial 00047 ( 00048 CSLScene* in_pScene, 00049 CSLModel *in_pModel, 00050 CdotXSITemplate* in_pTemplate 00051 ); 00052 00054 ~CSLGlobalMaterial(); 00055 00059 CSLBaseMaterial* GetMaterial(); 00060 00064 CSIBCString GetMaterialName(); 00065 00069 SI_Void SetMaterial( CSLBaseMaterial* in_pNewMaterial ); 00070 00074 SI_Void SetMaterialName( const CSIBCString& in_szNewMaterialName ); 00075 00079 EPropagationType GetPropagationType(); 00080 00084 SI_Void SetPropagationType( EPropagationType in_PropagationType ); 00085 00089 CSLTemplate::ETemplateType Type(); 00090 00094 SI_Error Synchronize(); 00095 00096 private: 00097 CSLBaseMaterial* m_pMaterial; 00098 CSIBCString m_szMaterialName; 00099 CSLStrEnumProxy<EPropagationType, SI_INHERITED> m_PropagationType; 00100 00101 // reserved for future use 00102 SI_Void *m_pReserved; 00103 }; 00104 00105 #endif