FXNode.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 _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