ShapeAnimation.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 _SHAPEANIMATION_H
00013 #define _SHAPEANIMATION_H
00014 
00015 #include "Template.h"
00016 
00017 class CSLBaseShape;
00018 class CSLFCurve;
00019 
00024 class XSIEXPORT CSLShapeAnimation
00025     : public CSLTemplate
00026 {
00027 public:
00034     CSLShapeAnimation(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, EFCurveInterpolationType in_Type);
00035     virtual ~CSLShapeAnimation();
00036 
00040     CSLBaseShape*               AddShape();
00041 
00048     CSLBaseShape*               InsertShape(SI_Int in_nIndex);
00049 
00053     SI_Int                      GetShapeCount();
00054 
00058     CSLBaseShape**              Shapes();
00059 
00065     SI_Error                    RemoveShape(SI_Int in_nIndex);
00066 
00072     SI_Error                    RemoveShape(CSLBaseShape* in_pObject);
00073 
00077     SI_Error                    ClearShapes();
00078 
00082     CSLFCurve*                  Animation();
00083 
00084     // Connection functions;
00085     CSLFCurve*                  ConnectAnimation(CSLFCurve *in_pNewAnimation);
00086     CSLBaseShape*               ConnectShape(CSLBaseShape* in_pNewShape, SI_Int in_nIndex);
00087 
00088     virtual SI_Error Fix();
00089     virtual SI_Error Synchronize();
00090 
00094     virtual ETemplateType Type() { return SI_SHAPE_ANIMATION; }
00095 
00096 protected:
00097     CSLBaseShape*               CreateShape();
00098 
00099 private:
00100     CSIBCArray<CSLBaseShape *>  m_Shapes;
00101     CSLFCurve*                  m_pAnimation;
00102     CSLStrEnumProxy<EFCurveInterpolationType, SI_CUBIC>     m_InterpolationType;
00103 
00104     void *m_pReserved;  // reserved for future extension
00105 };
00106 
00107 #endif