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 _FXNODE_H 00013 #define _FXNODE_H 00014 00015 #include "Template.h" 00016 00017 class CSLVariantParameter; 00018 class CSLFXOperatorConnection; 00019 00023 class XSIEXPORT CSLFXOperator 00024 : public CSLTemplate 00025 { 00026 public: 00027 00029 enum EOutputType 00030 { 00031 SI_DEFAULT = 0, 00032 }; 00039 CSLFXOperator(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00040 00042 virtual ~CSLFXOperator(); 00043 00047 ETemplateType Type(){ return XSI_FXOPERATOR; } 00048 00052 SI_Error Synchronize(); 00053 00054 00058 EOutputType GetOutputType(); 00059 00063 SI_Void SetOutputType( EOutputType in_OutputType ); 00064 00068 SI_Char* GetEffectID(); 00069 00073 SI_Void SetEffectID( SI_Char* in_szProgID ); 00074 00076 // Parameters Functionality /////////////////////////////////////////////// 00078 00082 CSLVariantParameter* AddParameter(); 00083 00088 SI_Error RemoveParameter( SI_Int in_nIndex ); 00089 00094 SI_Error RemoveParameter( CSLVariantParameter* in_pToRemove ); 00095 00099 SI_Error ClearParameters(); 00100 00105 CSLVariantParameter* ConnectParameter( CSLVariantParameter* in_pToConnect ); 00106 00110 CSLVariantParameter** GetParameterList(); 00111 00115 SI_Int GetParameterCount(); 00116 00121 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00122 00128 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00129 00131 // Connection points functionality //////////////////////////////////////// 00133 00137 CSLFXOperatorConnection* AddConnectionPoint(); 00138 00143 SI_Error RemoveConnectionPoint( SI_Int in_nIndex ); 00144 00149 SI_Error RemoveConnectionPoint( CSLFXOperatorConnection* in_pToRemove ); 00150 00154 SI_Error ClearConnectionPoints(); 00155 00160 CSLFXOperatorConnection* ConnectConnectionPoint( CSLFXOperatorConnection* in_pToConnect ); 00161 00165 CSLFXOperatorConnection** GetConnectionPointList(); 00166 00170 SI_Int GetConnectionPointCount(); 00171 00172 private: 00173 CSLStringProxy m_ProgID; 00174 CSLEnumProxy<EOutputType, SI_DEFAULT> m_OutputType; 00175 CSIBCArray<CSLFXOperatorConnection*> m_ConnectionPoints; 00176 CSIBCArray<CSLVariantParameter*> m_Parameters; 00177 00178 SI_Void *m_pReserved; 00179 }; 00180 00181 #endif