ShaderInstanceData.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 _SHADER_INSTANCE_DATA_H
00013 #define _SHADER_INSTANCE_DATA_H
00014 
00015 #include "Template.h"
00016 
00017 class CSLVariantParameter;
00018 
00022 class XSIEXPORT CSLShaderInstanceData
00023     : public CSLTemplate
00024 {
00025 public:
00026 
00033     CSLShaderInstanceData
00034     (
00035         CSLScene* in_pScene,
00036         CSLModel *in_pModel,
00037         CdotXSITemplate* in_pTemplate
00038     );
00039 
00042     ~CSLShaderInstanceData();
00043 
00045 
00048     inline ETemplateType Type();
00049 
00053     SI_Error Synchronize();
00054 
00055     // Reference Functionality ////////////////////////////////////////////////////
00056 
00058 
00061     CSLModel* GetReference();
00062 
00064 
00067     SI_Void SetReference( CSLModel* in_pReferedModel);
00068 
00069 
00070     // Parameters Functionality ///////////////////////////////////////////////
00071 
00075     CSLVariantParameter* AddParameter();
00076 
00081     SI_Error RemoveParameter( SI_Int in_nIndex );
00082 
00087     SI_Error RemoveParameter( CSLVariantParameter* in_pToRemove );
00088 
00092     SI_Error ClearParameters();
00093 
00098     CSLVariantParameter* ConnectParameter( CSLVariantParameter* in_pToConnect );
00099 
00103     CSLVariantParameter** GetParameterList();
00104 
00108     SI_Int GetParameterCount();
00109 
00114     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00115 
00121     CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00122 
00123 private:
00124     CSLModel *m_pReferedModel;
00125     CSIBCArray<CSLVariantParameter *> m_Parameters;
00126 
00127     SI_Void *m_pReserved;   // reserved for future extension
00128 };
00129 
00130 
00131 #endif // _SHADER_INSTANCE_DATA_H