XSIShapeAnimation.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 _XSISHAPEANIMATION_H
00013 #define _XSISHAPEANIMATION_H
00014 
00015 #include "Template.h"
00016 #include "ActionClip.h"
00017 
00018 class CSLXSIShape;
00019 class CSLFCurve;
00020 
00025 class XSIEXPORT CSLXSIShapeAnimation
00026     : public CSLTemplate
00027 {
00028 public:
00035     CSLXSIShapeAnimation(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, EFCurveInterpolationType in_Type);
00036     virtual ~CSLXSIShapeAnimation();
00037 
00041     CSLXSIShape*                AddXSIShape();
00042 
00049     CSLXSIShape*                InsertXSIShape(SI_Int in_nIndex);
00050 
00054     SI_Int                      GetXSIShapeCount();
00055 
00059     CSLXSIShape**               XSIShapes();
00060 
00066     SI_Error                    RemoveXSIShape(SI_Int in_nIndex);
00067 
00073     SI_Error                    RemoveXSIShape(CSLXSIShape* in_pObject);
00074 
00078     SI_Error                    ClearXSIShapes();
00079 
00084     CSLFCurve*                  Animation();
00085 
00091     CSLFCurve*                  AddAnimation();
00092 
00093     // Connection functions;
00094     CSLFCurve*                  ConnectAnimation(CSLFCurve *in_pNewAnimation);
00095     CSLXSIShape*                ConnectXSIShape(CSLXSIShape* in_pNewShape, SI_Int in_nIndex);
00096 
00100     CSLActionClip*              GetFirstActionClipByShape(CSLXSIShape* in_pShape);
00101 
00102     virtual SI_Error Fix();
00103     virtual SI_Error Synchronize();
00104 
00108     virtual ETemplateType Type() { return XSI_SHAPE_ANIMATION; }
00109 
00110 protected:
00111     virtual CSLXSIShape*        CreateXSIShape();
00112 
00113 private:
00114     CSIBCArray<CSLXSIShape *>   m_XSIShapes;
00115     CSLFCurve*                  m_pAnimation;
00116     CSLStrEnumProxy<EFCurveInterpolationType, SI_CUBIC>     m_InterpolationType;
00117 
00118     void *m_pReserved;  // reserved for future extension
00119 };
00120 
00121 #endif