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