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 private:
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_animationName;
00051 std::map<std::string, int> m_materialName;
00052 std::map<std::string, int> m_meshName;
00053
00054
00055 public:
00056 CalCoreModel();
00057 virtual ~CalCoreModel();
00058
00059
00060 public:
00061 bool create(const std::string& strName);
00062 void destroy();
00063
00064 Cal::UserData getUserData();
00065 void setUserData(Cal::UserData userData);
00066
00067 void scale(float factor);
00068
00069
00070 int addCoreAnimation(CalCoreAnimation *pCoreAnimation);
00071 CalCoreAnimation *getCoreAnimation(int coreAnimationId);
00072 int getCoreAnimationCount();
00073 int loadCoreAnimation(const std::string& strFilename);
00074 int loadCoreAnimation(const std::string& strFilename, const std::string& strAnimationName);
00075 int unloadCoreAnimation(const std::string& name);
00076 int unloadCoreAnimation(int coreAnimationId);
00077 bool saveCoreAnimation(const std::string& strFilename, int coreAnimationId);
00078 bool addAnimationName(const std::string& strAnimationName, int coreAnimationId);
00079 int getCoreAnimationId(const std::string& strAnimationName);
00080
00081
00082 int addCoreMorphAnimation(CalCoreMorphAnimation *pCoreMorphAnimation);
00083 CalCoreMorphAnimation *getCoreMorphAnimation(int coreMorphAnimationId);
00084 int getCoreMorphAnimationCount();
00085
00086
00087 int addCoreMaterial(CalCoreMaterial *pCoreMaterial);
00088 bool createCoreMaterialThread(int coreMaterialThreadId);
00089 CalCoreMaterial *getCoreMaterial(int coreMaterialId);
00090 int getCoreMaterialCount();
00091 int getCoreMaterialId(int coreMaterialThreadId, int coreMaterialSetId);
00092 int loadCoreMaterial(const std::string& strFilename);
00093 int loadCoreMaterial(const std::string& strFilename, const std::string& strMaterialName);
00094 int unloadCoreMaterial(const std::string& name);
00095 int unloadCoreMaterial(int coreMaterialId);
00096 bool saveCoreMaterial(const std::string& strFilename, int coreMaterialId);
00097 bool setCoreMaterialId(int coreMaterialThreadId, int coreMaterialSetId, int coreMaterialId);
00098 bool addMaterialName(const std::string& strMaterialName, int coreMaterialId);
00099 int getCoreMaterialId(const std::string& strMaterialName);
00100
00101
00102 int addCoreMesh(CalCoreMesh *pCoreMesh);
00103 CalCoreMesh *getCoreMesh(int coreMeshId);
00104 int getCoreMeshCount();
00105 int loadCoreMesh(const std::string& strFilename);
00106 int loadCoreMesh(const std::string& strFilename, const std::string& strMeshName);
00107 int unloadCoreMesh(const std::string& name);
00108 int unloadCoreMesh(int coreMeshId);
00109 bool saveCoreMesh(const std::string& strFilename, int coreMeshId);
00110 bool addMeshName(const std::string& strMeshName, int coreMeshId);
00111 int getCoreMeshId(const std::string& strMeshName);
00112
00113
00114 CalCoreSkeleton *getCoreSkeleton();
00115 bool loadCoreSkeleton(const std::string& strFilename);
00116 bool saveCoreSkeleton(const std::string& strFilename);
00117 void setCoreSkeleton(CalCoreSkeleton *pCoreSkeleton);
00118 void addBoneName(const std::string& strBoneName, int boneId);
00119 int getBoneId(const std::string& strBoneName);
00120
00121 };
00122
00123 #endif
00124
00125