# 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