RedBakeSpineIO.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // RedBakeSpineIO.h
  3. // cocos2d_libs
  4. //
  5. // Created by ZhengSong on 2023/2/16.
  6. //
  7. #ifndef RedBakeSpineIO_h
  8. #define RedBakeSpineIO_h
  9. #include "spine_bake_data.pb.h"
  10. #include "RedAnimationBakeModel.h"
  11. using namespace std;
  12. namespace spine {
  13. class RedBakeSpineIO {
  14. public:
  15. struct AsyncStruct
  16. {
  17. public:
  18. AsyncStruct
  19. ( const std::string& aFilaName,
  20. const std::string& aFilePath,
  21. const std::function<void(std::unordered_map<std::string, RedAnimationBakeModel*>&)> aCallback
  22. ): filename(aFilaName), filePath(aFilePath), callback(aCallback){}
  23. std::string filename;
  24. std::string filePath;
  25. std::function<void(std::unordered_map<std::string, RedAnimationBakeModel*>&)> callback;
  26. };
  27. RedBakeSpineIO();
  28. ~RedBakeSpineIO();
  29. static RedBakeSpineIO* getInstance();
  30. /// 把spine的烘焙数据写入到指定路径
  31. /// @param filePath 烘焙文件路径
  32. /// @param bakeModelList 烘焙的数据列表
  33. void write(const std::string& filePath, const std::unordered_map<std::string, RedAnimationBakeModel*>& datas);
  34. //read
  35. void readAnimationBakeModel(const ::RedSpineBakeProto::RedAnimationBakeModel& model_pb, RedAnimationBakeModel* model,const std::string& filePath);
  36. private:
  37. //write
  38. void _writeAnimationBakeModel(RedAnimationBakeModel* model, ::RedSpineBakeProto::RedAnimationBakeModel& model_pb);
  39. void _writeSlotBakeModel(RedSlotBakeModel* model, ::RedSpineBakeProto::RedSlotBakeModel& model_pb);
  40. //read
  41. void _readAnimationBakeModel(const ::RedSpineBakeProto::RedAnimationBakeModel& model_pb, RedAnimationBakeModel* model,const std::string& filePath);
  42. void _readSlotBakeModel(const ::RedSpineBakeProto::RedSlotBakeModel& model_pb, RedSlotBakeModel* model, const std::string& filePath, const std::function<void()>& finishCb = nullptr);
  43. };
  44. } //namespace
  45. #endif /* RedBakeSpineIO_h */