ActionClip.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 _ACTIONCLIP_H
00013 #define _ACTIONCLIP_H
00014 
00015 #include "Template.h"
00016 
00017 // Forward declaration
00018 class CSLTimeControl;
00019 class CSLAction;
00020 
00033 class XSIEXPORT CSLActionClip
00034     : public CSLTemplate
00035 {
00036 public:
00037 
00043     CSLActionClip(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00044 
00047     virtual ~CSLActionClip();
00048 
00049     SI_Error Synchronize();
00050 
00054     CSLTemplate::ETemplateType Type(){ return CSLTemplate::XSI_ACTIONCLIP; }
00055 
00060     SI_Bool GetActive();
00061 
00065     SI_Void SetActive( SI_Bool in_bNew );
00066 
00070     SI_Float GetDuration();
00071 
00075     SI_Void SetDuration( SI_Float in_fNew );
00076 
00085     SI_Bool GetFillAction();
00086 
00094     SI_Void SetFillAction( SI_Bool in_bNew );
00095 
00101     SI_Int GetFillPriority();
00102 
00108     SI_Void SetFillPriority( SI_Int in_nNew );
00109 
00113     SI_Float GetStartTime();
00114 
00118     SI_Void SetStartTime( SI_Float in_fNew );
00119 
00123     SI_Float GetWeight();
00124 
00128     SI_Void SetWeight( SI_Float in_fNew );
00129 
00130     // action functionality ///////////////////////////////////////////////////
00131 
00137     CSLAction* GetReference();
00138 
00145     SI_Void SetReference( CSLAction* in_pAction );
00146 
00147     SI_Char* GetReferenceXSIPath();
00148     SI_Void SetReferenceXSIPath( SI_Char* in_szPath );
00149 
00150     // time control functionality /////////////////////////////////////////////
00151 
00155     CSLTimeControl* AddTimeControl();
00156 
00161     CSLTimeControl* ConnectTimeControl( CSLTimeControl *in_pTimeControl );
00162 
00168     SI_Error RemoveTimeControl( SI_Int in_nIndex );
00169 
00175     SI_Error RemoveTimeControl( CSLTimeControl *in_pTimeControl );
00176 
00180     CSLTimeControl** GetTimeControlList();
00181 
00185     SI_Int GetTimeControlCount();
00186 
00190     SI_Error ClearTimeControls();
00191 
00192 
00193     CSLFloatProxy*      GetStartTimeProxy(){return &m_StartTime;};
00194     CSLFloatProxy*      GetDurationProxy(){return &m_Duration;};
00195     CSLBoolProxy*       GetActiveProxy(){return &m_Active;};
00196     CSLFloatProxy*      GetWeightProxy(){return &m_Weight;};
00197     CSLBoolProxy*       GetFillActionProxy(){return &m_FillAction;};
00198     CSLIntProxy*        GetFillPriorityProxy(){return &m_FillPriority;};
00199     CSLStringProxy*     GetReferencePathProxy(){return &m_ReferencePath;};
00200 
00201     virtual CSLAnimatableType*  ParameterFromName(SI_Char *in_szName);
00202     virtual CSLAnimatableType*  ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00203 
00204 private:
00205     CSLFloatProxy m_StartTime;
00206     CSLFloatProxy m_Duration;
00207     CSLBoolProxy m_Active;
00208     CSLFloatProxy m_Weight;
00209     CSLBoolProxy m_FillAction;
00210     CSLIntProxy m_FillPriority;
00211     CSLStringProxy m_ReferencePath;
00212     CSLAction* m_pReference;
00213     CSIBCArray<CSLTimeControl *> m_TimeControls;
00214     SI_Void *m_pReserved;
00215 };
00216 
00217 #endif