GlobalMaterial.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Crosswalk team
00004 //
00005 // Copyright 2008 Autodesk, Inc.  All rights reserved.
00006 // Use of this software is subject to the terms of the Autodesk license agreement
00007 // provided at the time of installation or download, or which otherwise accompanies
00008 // this software in either electronic or hard copy form.
00009 //
00010 //***************************************************************************************
00011 
00012 #ifndef _GLOBALMATERIAL_H
00013 #define _GLOBALMATERIAL_H
00014 
00015 #include "Template.h"
00016 
00017 // Forward declaration
00018 class CSLBaseMaterial;
00019 
00023 class XSIEXPORT CSLGlobalMaterial
00024     : public CSLTemplate
00025 {
00026 public:
00028     enum EPropagationType
00029     {
00030         SI_BRANCH,      
00031         SI_NODE,        
00032         SI_INHERITED    
00033     };
00034 
00036 
00043     CSLGlobalMaterial
00044     (
00045         CSLScene* in_pScene,
00046         CSLModel *in_pModel,
00047         CdotXSITemplate* in_pTemplate
00048     );
00049 
00051     ~CSLGlobalMaterial();
00052 
00054 
00057     CSLBaseMaterial* GetMaterial();
00058 
00060 
00063     CSIBCString GetMaterialName();
00064 
00066 
00069     SI_Void SetMaterial( CSLBaseMaterial*  in_pNewMaterial );
00070 
00072 
00075     SI_Void SetMaterialName( const CSIBCString&  in_szNewMaterialName );
00076 
00078 
00081     EPropagationType GetPropagationType();
00082 
00084 
00087     SI_Void SetPropagationType( EPropagationType in_PropagationType );
00088 
00090 
00093     CSLTemplate::ETemplateType Type();
00094 
00096 
00099     SI_Error Synchronize();
00100 
00101 private:
00102     CSLBaseMaterial* m_pMaterial;
00103     CSIBCString m_szMaterialName;
00104     CSLStrEnumProxy<EPropagationType, SI_INHERITED>  m_PropagationType;
00105 
00106     // reserved for future use
00107     SI_Void *m_pReserved;
00108 };
00109 
00110 #endif