COLLADAAction.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 _COLLADAACTION_H
00013 #define _COLLADAACTION_H
00014 
00015 #include "Action.h"
00016 #include "ActionFCurve.h"
00017 
00030 class XSIEXPORT CSLCOLLADAAction
00031     : public CSLAction
00032 {
00033 public:
00039     CSLCOLLADAAction(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00040 
00043     virtual ~CSLCOLLADAAction();
00044 
00048     virtual SI_Error Synchronize();
00049 
00053     virtual SI_Error Fix();
00054 
00058     virtual SI_Float GetEndTime();
00059 
00063     virtual SI_Void SetEndTime( SI_Float in_fTime );
00064 
00068     virtual SI_Float GetStartTime();
00069 
00073     virtual SI_Void SetStartTime( SI_Float in_fTime );
00074 
00078     virtual CSLActionFCurve* AddAnimation();
00079 
00084     virtual CSLActionFCurve* AddAnimation( EFCurveInterpolationType in_InterpolationType );
00085 
00086 private:
00087     
00088     SI_Void *m_pReserved;
00089     CdotXSIParam *m_pStart;
00090     CdotXSIParam *m_pEnd;
00091 
00092 };
00093 
00094 #include "BaseFCurve.h"
00095 
00100 class XSIEXPORT CSLCOLLADAActionFCurve
00101     : public CSLActionFCurve
00102 {
00103 public:
00104 
00112     CSLCOLLADAActionFCurve(CSLScene* in_pScene,
00113                          CSLModel *in_pModel,
00114                          CdotXSITemplate* in_pTemplate,
00115                          EFCurveInterpolationType in_InterpolationType);
00116 
00119     virtual ~CSLCOLLADAActionFCurve();
00120 
00124     virtual SI_Error Synchronize();
00125   
00130     virtual SI_Error ConnectCOLLADAAnimation( CCOLLADATemplate* in_pChannel, const int in_offset = 0);
00131 
00136     virtual CSLAnimatableType* ParameterReference();
00137 
00138 private:
00139 
00140     SI_Void     GetFloatArrayFromCurve ( CSIBCArray<float>& inout_Array, int in_iElement );
00141     SI_Void     AddSource ( CCOLLADATemplate* in_pAnimation, 
00142                             int in_iElement, 
00143                             SI_Char* in_szPrefix, 
00144                             SI_Char* in_szID, 
00145                             SI_Char* in_szOutput,
00146                             CCOLLADATemplate* in_pSampler);
00147     
00148     CSLAnimatableType *m_pParamReference;
00149     SI_Void *m_pReserved;
00150 };
00151 
00152 
00153 #endif _COLLADAACTION_H