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