00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _XSISHAPEANIMATION_H 00015 #define _XSISHAPEANIMATION_H 00016 00017 #include "Template.h" 00018 #include "ActionClip.h" 00019 00020 class CSLXSIShape; 00021 class CSLFCurve; 00022 00029 class XSIEXPORT CSLXSIShapeAnimation 00030 : public CSLTemplate 00031 { 00032 public: 00039 CSLXSIShapeAnimation(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, EFCurveInterpolationType in_Type); 00040 virtual ~CSLXSIShapeAnimation(); 00041 00045 CSLXSIShape* AddXSIShape(); 00046 00052 CSLXSIShape* InsertXSIShape(SI_Int in_nIndex); 00053 00057 SI_Int GetXSIShapeCount(); 00058 00062 CSLXSIShape** XSIShapes(); 00063 00069 SI_Error RemoveXSIShape(SI_Int in_nIndex); 00070 00076 SI_Error RemoveXSIShape(CSLXSIShape* in_pObject); 00077 00081 SI_Error ClearXSIShapes(); 00082 00086 CSLFCurve* Animation(); 00087 00092 CSLFCurve* AddAnimation(); 00093 00094 // Connection functions; 00095 CSLFCurve* ConnectAnimation(CSLFCurve *in_pNewAnimation); 00096 CSLXSIShape* ConnectXSIShape(CSLXSIShape* in_pNewShape, SI_Int in_nIndex); 00097 00102 CSLActionClip* GetFirstActionClipByShape(CSLXSIShape* in_pShape); 00103 00104 virtual SI_Error Fix(); 00105 virtual SI_Error Synchronize(); 00106 00110 virtual ETemplateType Type() { return XSI_SHAPE_ANIMATION; } 00111 00112 protected: 00113 virtual CSLXSIShape* CreateXSIShape(); 00114 00115 private: 00116 CSIBCArray<CSLXSIShape *> m_XSIShapes; 00117 CSLFCurve* m_pAnimation; 00118 CSLStrEnumProxy<EFCurveInterpolationType, SI_CUBIC> m_InterpolationType; 00119 00120 void *m_pReserved; // reserved for future extension 00121 }; 00122 00123 #endif