00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef CAL_COREMODEL_H
00012 #define CAL_COREMODEL_H
00013
00014
00015
00016
00017
00018 #include "cal3d/global.h"
00019
00020
00021
00022
00023
00024 class CalCoreSkeleton;
00025 class CalCoreAnimation;
00026 class CalCoreMorphAnimation;
00027 class CalCoreMesh;
00028 class CalCoreMaterial;
00029
00030
00031
00032
00033
00034
00038 class CAL3D_API CalCoreModel
00039 {
00040
00041 protected:
00042 std::string m_strName;
00043 CalCoreSkeleton *m_pCoreSkeleton;
00044 std::vector<CalCoreAnimation *> m_vectorCoreAnimation;
00045 std::vector<CalCoreMorphAnimation *> m_vectorCoreMorphAnimation;
00046 std::vector<CalCoreMesh *> m_vectorCoreMesh;
00047 std::vector<CalCoreMaterial *> m_vectorCoreMaterial;
00048 std::map<int, std::map<int, int> > m_mapmapCoreMaterialThread;
00049 Cal::UserData m_userData;
00050 std::map<std::string, int> m_animationHelper;
00051
00052
00053 public:
00054 CalCoreModel();
00055 virtual ~CalCoreModel();
00056
00057
00058 public:
00059 int addCoreAnimation(CalCoreAnimation *pCoreAnimation);
00060 int addCoreMorphAnimation(CalCoreMorphAnimation *pCoreMorphAnimation);
00061 int addCoreMaterial(CalCoreMaterial *pCoreMaterial);
00062 int addCoreMesh(CalCoreMesh *pCoreMesh);
00063 bool create(const std::string& strName);
00064 bool createCoreMaterialThread(int coreMaterialThreadId);
00065 void destroy();
00066 CalCoreAnimation *getCoreAnimation(int coreAnimationId);
00067 CalCoreMorphAnimation *getCoreMorphAnimation(int coreMorphAnimationId);
00068 int getCoreAnimationCount();
00069 int getCoreMorphAnimationCount();
00070 CalCoreMaterial *getCoreMaterial(int coreMaterialId);
00071 int getCoreMaterialCount();
00072 int getCoreMaterialId(int coreMaterialThreadId, int coreMaterialSetId);
00073 CalCoreMesh *getCoreMesh(int coreMeshId);
00074 int getCoreMeshCount();
00075 CalCoreSkeleton *getCoreSkeleton();
00076 Cal::UserData getUserData();
00077 int loadCoreAnimation(const std::string& strFilename);
00078 int loadCoreMaterial(const std::string& strFilename);
00079 int loadCoreMesh(const std::string& strFilename);
00080 bool loadCoreSkeleton(const std::string& strFilename);
00081 bool saveCoreAnimation(const std::string& strFilename, int coreAnimtionId);
00082 bool saveCoreMaterial(const std::string& strFilename, int coreMaterialId);
00083 bool saveCoreMesh(const std::string& strFilename, int coreMeshId);
00084 bool saveCoreSkeleton(const std::string& strFilename);
00085 bool setCoreMaterialId(int coreMaterialThreadId, int coreMaterialSetId, int coreMaterialId);
00086 void setCoreSkeleton(CalCoreSkeleton *pCoreSkeleton);
00087 void setUserData(Cal::UserData userData);
00088 void addBoneHelper(const std::string& strBoneName, int boneId);
00089 void addAnimHelper(const std::string& strAnimName, int animId);
00090 int getBoneId(const std::string& strBoneName);
00091 int getAnimId(const std::string& strAnimName);
00092
00093 };
00094
00095 #endif
00096
00097