00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _SHADER_INSTANCE_DATA_H 00015 #define _SHADER_INSTANCE_DATA_H 00016 00017 #include "Template.h" 00018 00019 class CSLVariantParameter; 00020 00026 class XSIEXPORT CSLShaderInstanceData 00027 : public CSLTemplate 00028 { 00029 public: 00030 00037 CSLShaderInstanceData 00038 ( 00039 CSLScene* in_pScene, 00040 CSLModel *in_pModel, 00041 CdotXSITemplate* in_pTemplate 00042 ); 00043 00046 ~CSLShaderInstanceData(); 00047 00051 inline ETemplateType Type(); 00052 00056 SI_Error Synchronize(); 00057 00058 // Reference Functionality //////////////////////////////////////////////////// 00059 00063 CSLModel* GetReference(); 00064 00068 SI_Void SetReference( CSLModel* in_pReferedModel); 00069 00070 00071 // Parameters Functionality /////////////////////////////////////////////// 00072 00076 CSLVariantParameter* AddParameter(); 00077 00082 SI_Error RemoveParameter( SI_Int in_nIndex ); 00083 00088 SI_Error RemoveParameter( CSLVariantParameter* in_pToRemove ); 00089 00093 SI_Error ClearParameters(); 00094 00099 CSLVariantParameter* ConnectParameter( CSLVariantParameter* in_pToConnect ); 00100 00104 CSLVariantParameter** GetParameterList(); 00105 00109 SI_Int GetParameterCount(); 00110 00115 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00116 00122 CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00123 00124 private: 00125 CSLModel *m_pReferedModel; 00126 CSIBCArray<CSLVariantParameter *> m_Parameters; 00127 00128 SI_Void *m_pReserved; // reserved for future extension 00129 }; 00130 00131 00132 #endif // _SHADER_INSTANCE_DATA_H