ShapeAnimation.h

Go to the documentation of this file.
00001 //***************************************************************************************
00002 // File supervisor: Crosswalk team
00012 //***************************************************************************************
00013 
00014 #ifndef _SHAPEANIMATION_H
00015 #define _SHAPEANIMATION_H
00016 
00017 #include "Template.h"
00018 
00019 class CSLBaseShape;
00020 class CSLFCurve;
00021 
00028 class XSIEXPORT CSLShapeAnimation
00029     : public CSLTemplate
00030 {
00031 public:
00038     CSLShapeAnimation(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, EFCurveInterpolationType in_Type);
00039     virtual ~CSLShapeAnimation();
00040 
00044     CSLBaseShape*               AddShape();
00045 
00051     CSLBaseShape*               InsertShape(SI_Int in_nIndex);
00052 
00056     SI_Int                      GetShapeCount();
00057 
00061     CSLBaseShape**              Shapes();
00062 
00068     SI_Error                    RemoveShape(SI_Int in_nIndex);
00069 
00075     SI_Error                    RemoveShape(CSLBaseShape* in_pObject);
00076 
00080     SI_Error                    ClearShapes();
00081 
00085     CSLFCurve*                  Animation();
00086 
00087     // Connection functions;
00088     CSLFCurve*                  ConnectAnimation(CSLFCurve *in_pNewAnimation);
00089     CSLBaseShape*               ConnectShape(CSLBaseShape* in_pNewShape, SI_Int in_nIndex);
00090 
00091     virtual SI_Error Fix();
00092     virtual SI_Error Synchronize();
00093 
00097     virtual ETemplateType Type() { return SI_SHAPE_ANIMATION; }
00098 
00099 protected:
00100     CSLBaseShape*               CreateShape();
00101 
00102 private:
00103     CSIBCArray<CSLBaseShape *>  m_Shapes;
00104     CSLFCurve*                  m_pAnimation;
00105     CSLStrEnumProxy<EFCurveInterpolationType, SI_CUBIC>     m_InterpolationType;
00106 
00107     void *m_pReserved;  // reserved for future extension
00108 };
00109 
00110 #endif