# 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