00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _CUSTOMPSET_H 00015 #define _CUSTOMPSET_H 00016 00017 #include "Template.h" 00018 00019 // Forward declaration 00020 class CSLVariantParameter; 00021 class CSLXSICustomParamInfo; 00022 00028 class XSIEXPORT CSLCustomPSet 00029 : public CSLTemplate 00030 { 00031 public: 00038 CSLCustomPSet(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00039 00041 virtual ~CSLCustomPSet(); 00042 00046 virtual SI_Error Synchronize(); 00047 00051 virtual ETemplateType Type() { return SI_CUSTOM_PSET; } 00052 00054 enum EPropagationType 00055 { 00056 SI_BRANCH, 00057 SI_NODE, 00058 SI_INHERITED 00059 }; 00060 00064 EPropagationType GetPropagationType(); 00065 00069 SI_Void SetPropagationType( EPropagationType in_PropagationType ); 00070 00072 // Parameters Functionality /////////////////////////////////////////////// 00074 00078 CSLVariantParameter* AddParameter(); 00079 00084 SI_Error RemoveParameter( SI_Int in_nIndex ); 00085 00090 SI_Error RemoveParameter( CSLVariantParameter* in_pToRemove ); 00091 00095 SI_Error ClearParameters(); 00096 00101 CSLVariantParameter* ConnectParameter( CSLVariantParameter* in_pToConnect ); 00102 00106 CSLVariantParameter** GetParameterList(); 00107 00111 SI_Int GetParameterCount(); 00112 00117 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00118 00124 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00125 00127 // Custom parameter information 00129 00135 CSLXSICustomParamInfo* CreateCustomParamInfo( SI_Int in_nIndex ); 00136 00144 CSLXSICustomParamInfo* CreateCustomParamInfo( CSLVariantParameter * in_pParam ); 00145 00151 CSLXSICustomParamInfo* ConnectCustomParamInfo( CSLXSICustomParamInfo *in_pToConnect ); 00152 00157 char *GetType(); 00158 00164 void SetType(char *in_pType); 00165 00166 private: 00167 CSLStrEnumProxy<EPropagationType, SI_INHERITED> m_PropagationType; 00168 CSIBCArray<CSLVariantParameter*> m_Parameters; 00169 00170 SI_Void *m_pReserved; // Reserved for future use 00171 }; 00172 00173 #endif