00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _FXNODE_H 00015 #define _FXNODE_H 00016 00017 #include "Template.h" 00018 00019 class CSLVariantParameter; 00020 class CSLFXOperatorConnection; 00021 00027 class XSIEXPORT CSLFXOperator 00028 : public CSLTemplate 00029 { 00030 public: 00031 00033 enum EOutputType 00034 { 00035 SI_DEFAULT = 0, 00036 }; 00037 00044 CSLFXOperator(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00045 00047 virtual ~CSLFXOperator(); 00048 00052 ETemplateType Type(){ return XSI_FXOPERATOR; } 00053 00057 SI_Error Synchronize(); 00058 00059 00063 EOutputType GetOutputType(); 00064 00068 SI_Void SetOutputType( EOutputType in_OutputType ); 00069 00073 SI_Char* GetEffectID(); 00074 00078 SI_Void SetEffectID( SI_Char* in_szProgID ); 00079 00081 // Parameters Functionality /////////////////////////////////////////////// 00083 00087 CSLVariantParameter* AddParameter(); 00088 00093 SI_Error RemoveParameter( SI_Int in_nIndex ); 00094 00099 SI_Error RemoveParameter( CSLVariantParameter* in_pToRemove ); 00100 00104 SI_Error ClearParameters(); 00105 00110 CSLVariantParameter* ConnectParameter( CSLVariantParameter* in_pToConnect ); 00111 00115 CSLVariantParameter** GetParameterList(); 00116 00120 SI_Int GetParameterCount(); 00121 00126 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00127 00133 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00134 00136 // Connection points functionality //////////////////////////////////////// 00138 00142 CSLFXOperatorConnection* AddConnectionPoint(); 00143 00148 SI_Error RemoveConnectionPoint( SI_Int in_nIndex ); 00149 00154 SI_Error RemoveConnectionPoint( CSLFXOperatorConnection* in_pToRemove ); 00155 00159 SI_Error ClearConnectionPoints(); 00160 00165 CSLFXOperatorConnection* ConnectConnectionPoint( CSLFXOperatorConnection* in_pToConnect ); 00166 00170 CSLFXOperatorConnection** GetConnectionPointList(); 00171 00175 SI_Int GetConnectionPointCount(); 00176 00177 private: 00178 CSLStringProxy m_ProgID; 00179 CSLEnumProxy<EOutputType, SI_DEFAULT> m_OutputType; 00180 CSIBCArray<CSLFXOperatorConnection*> m_ConnectionPoints; 00181 CSIBCArray<CSLVariantParameter*> m_Parameters; 00182 00183 SI_Void *m_pReserved; 00184 }; 00185 00186 #endif