载入中...
搜索中...
未找到
SpineSkeleton.h
浏览该文件的文档.
1#pragma once
2
4
5#include <string>
6#include <vector>
7
8namespace eve::animation {
9
15public:
17 ~SpineSkeleton() = default;
18
19 SpineSkeleton(const SpineSkeleton &) = delete;
21
22 SpineSkeletonData *getData() const { return data_; }
23
24 bool setSkin(const std::string &name);
25 int getSkin() const { return skinIndex_; }
26
27 void setToSetupPose();
29
30 int getBoneCount() const;
31 float getBoneLocalX(int index) const;
32 float getBoneLocalY(int index) const;
33 float getBoneLocalRotation(int index) const;
34 float getBoneLocalScaleX(int index) const;
35 float getBoneLocalScaleY(int index) const;
36
37 void setBoneLocalX(int index, float x);
38 void setBoneLocalY(int index, float y);
39 void setBoneLocalRotation(int index, float degrees);
40 void setBoneLocalScaleX(int index, float sx);
41 void setBoneLocalScaleY(int index, float sy);
42
43 float getBoneWorldX(int index) const;
44 float getBoneWorldY(int index) const;
45 float getBoneWorldRotation(int index) const;
46 float getBoneWorldScaleX(int index) const;
47 float getBoneWorldScaleY(int index) const;
49 void getBoneWorldMatrix(int index, float &a, float &b, float &c, float &d) const;
50
51 int getSlotCount() const;
52 std::string getSlotAttachmentName(int slotIndex) const;
53 void setSlotAttachmentName(int slotIndex, const std::string &name);
54
55 const SpineSkeletonData::RegionAttachment *getSlotRegion(int slotIndex) const;
56
57private:
58 friend class SpineAnim;
59
60 struct BonePose {
61 float x = 0.f, y = 0.f;
62 float rotation = 0.f;
63 float scaleX = 1.f, scaleY = 1.f;
64 float worldX = 0.f, worldY = 0.f;
65 float worldRot = 0.f;
66 float worldSX = 1.f, worldSY = 1.f;
67 float a = 1.f, b = 0.f, c = 0.f, d = 1.f; // 2x2 world matrix
68 };
69
70 void checkBone(int index) const;
71 void checkSlot(int index) const;
72
73 SpineSkeletonData *data_ = nullptr;
74 int skinIndex_ = 0;
75 std::vector<BonePose> bones_;
76 std::vector<std::string> slotAttachments_;
77};
78
79} // namespace eve::animation
float degrees
Definition CardTypes.cpp:33
int y
Definition Grass.cpp:135
int x
Definition Grass.cpp:135
uint32_t a
uint32_t b
uint32_t c
Light2D::Data * data
const char * name
Definition RockMesh.cpp:21
int d
Spine animation player + 2D draw collector (region attachments).
Definition SpineAnim.h:32
Spine skeleton JSON data (bones / slots / skins / animations).
Runtime Spine skeleton pose (local + world bone transforms, slot attachments). Script type: SpineSkel...
void setBoneLocalScaleY(int index, float sy)
float getBoneWorldScaleY(int index) const
float getBoneLocalScaleY(int index) const
float getBoneWorldScaleX(int index) const
float getBoneWorldRotation(int index) const
void setBoneLocalScaleX(int index, float sx)
float getBoneLocalScaleX(int index) const
bool setSkin(const std::string &name)
SpineSkeleton & operator=(const SpineSkeleton &)=delete
SpineSkeleton(const SpineSkeleton &)=delete
float getBoneLocalX(int index) const
const SpineSkeletonData::RegionAttachment * getSlotRegion(int slotIndex) const
std::string getSlotAttachmentName(int slotIndex) const
void getBoneWorldMatrix(int index, float &a, float &b, float &c, float &d) const
World 2x2 matrix columns (a,c) / (b,d) used for local→world offset.
float getBoneLocalRotation(int index) const
void setBoneLocalRotation(int index, float degrees)
float getBoneWorldY(int index) const
void setBoneLocalX(int index, float x)
SpineSkeletonData * getData() const
void setSlotAttachmentName(int slotIndex, const std::string &name)
float getBoneLocalY(int index) const
void setBoneLocalY(int index, float y)
float getBoneWorldX(int index) const