载入中...
搜索中...
未找到
SpineAtlas.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include <string>
6#include <unordered_map>
7#include <vector>
8
9namespace eve::animation {
10
17public:
19 SpineAtlas() = default;
21 ~SpineAtlas() = default;
22
23 SpineAtlas(const SpineAtlas &) = delete;
24 SpineAtlas &operator=(const SpineAtlas &) = delete;
25
27 bool loadFromText(const std::string &text, std::string *error = nullptr);
29 bool loadFromFile(const std::string &path, std::string *error = nullptr);
30
32 void clear();
33
35 int getPageCount() const { return static_cast<int>(pages_.size()); }
37 std::string getPageName(int pageIndex) const;
39 int getPageWidth(int pageIndex) const;
41 int getPageHeight(int pageIndex) const;
42
44 int getRegionCount() const { return static_cast<int>(regions_.size()); }
46 int findRegion(const std::string &name) const;
48 std::string getRegionName(int index) const;
50 int getRegionPage(int index) const;
52 int getRegionX(int index) const;
54 int getRegionY(int index) const;
56 int getRegionWidth(int index) const;
58 int getRegionHeight(int index) const;
60 int getRegionOriginalWidth(int index) const;
62 int getRegionOriginalHeight(int index) const;
64 int getRegionOffsetX(int index) const;
66 int getRegionOffsetY(int index) const;
68 bool getRegionRotate(int index) const;
69
71 void getRegionUV(int index, int texW, int texH, float &u0, float &v0, float &u1,
72 float &v1) const;
73
74private:
75 struct Page {
76 std::string name;
77 int width = 0;
78 int height = 0;
79 };
80
81 struct Region {
82 std::string name;
83 int pageIndex = 0;
84 int x = 0, y = 0, w = 0, h = 0;
85 int origW = 0, origH = 0;
86 int offsetX = 0, offsetY = 0;
87 bool rotate = false;
88 };
89
90 void checkPage(int index) const;
91 void checkRegion(int index) const;
92
93 std::vector<Page> pages_;
94 std::vector<Region> regions_;
95 std::unordered_map<std::string, int> regionByName_;
96};
97
98} // namespace eve::animation
float w
Definition AnimClip.cpp:738
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
#define EVENGINE_API_WORLD
Definition Export.h:109
int h
std::uint32_t height
std::uint32_t width
std::string text
std::string name
std::string error
Definition Package.cpp:60
std::string path
Definition PlayHost.cpp:110
float offsetX
float offsetY
uint32_t index
Esoteric Spine .atlas text parser (region rectangles + page metadata). Does not load image pixels — b...
Definition SpineAtlas.h:16
SpineAtlas(const SpineAtlas &)=delete
SpineAtlas & operator=(const SpineAtlas &)=delete
int getPageCount() const
Returns the page count.
Definition SpineAtlas.h:35
SpineAtlas()=default
Spine atlas.
int getRegionCount() const
Returns the region count.
Definition SpineAtlas.h:44
~SpineAtlas()=default
Spine atlas.