#ifndef _SPINESKELETONDATACACHE_H_ #define _SPINESKELETONDATACACHE_H_ #include <cocos2d.h> #include "spine/spine.h" #include "spine/spine-cocos2dx.h" #include "CocosStudioExport.h" #include <functional> #if !defined(CC_USE_SPINE_CPP) || CC_USE_SPINE_CPP class CCS_DLL SpineSkeletonDataCache { public: class SkeletonData : public cocos2d::Ref { public: SkeletonData(spine::SkeletonData* d, spine::AttachmentLoader* loader) : data(d), attachmentLoader(loader) {} ~SkeletonData() { if (data != nullptr) delete (data); if (attachmentLoader != nullptr) delete (attachmentLoader); } spine::AttachmentLoader* attachmentLoader; spine::SkeletonData* data; }; static SpineSkeletonDataCache* getInstance(); SpineSkeletonDataCache(); void setErrorReportFunc(void (*errorfunc)(const char* pszFormat, ...)); SkeletonData* addData(const char* dataFile, const char* atlasFile, float scale); void removeData(const char* dataFile); void removeAllData(void); void removeAllUnusedData(void); public: hlookup::string_map<SkeletonData*> _cacheTable; void (*_reportError)(const char* pszFormat, ...); }; #else class SpineSkeletonDataCache { public: class SkeletonData : public cocos2d::Ref { public: SkeletonData(spSkeletonData* d, spAttachmentLoader* loader) : data(d), attachmentLoader(loader) {} ~SkeletonData() { if (data != nullptr) spSkeletonData_dispose(data); if (attachmentLoader != nullptr) spAttachmentLoader_dispose(attachmentLoader); } spAttachmentLoader* attachmentLoader; spSkeletonData* data; }; SpineSkeletonDataCache(); void setErrorReportFunc(void (*errorfunc)(const char* pszFormat, ...)); static SpineSkeletonDataCache* getInstance(); SkeletonData* addData(const char* dataFile, const char* atlasFile, float scale); void removeData(const char* dataFile); void removeAllData(void); void removeAllUnusedData(void); public: hlookup::string_map<SkeletonData*> _cacheTable; void (*_reportError)(const char* pszFormat, ...); }; #endif #endif