-
-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathspriterender.h
More file actions
111 lines (76 loc) · 2.63 KB
/
spriterender.h
File metadata and controls
111 lines (76 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#ifndef SPRITERENDER
#define SPRITERENDER
#include "renderable.h"
class Sprite;
class Texture;
class Material;
class Mesh;
class Lod;
class MaterialInstance;
class ENGINE_EXPORT SpriteRender : public Renderable {
A_REGISTER(SpriteRender, Renderable, Components/2D)
A_PROPERTIES(
A_PROPERTYEX(Material *, material, SpriteRender::material, SpriteRender::setMaterial, "editor=Asset"),
A_PROPERTYEX(Sprite *, sprite, SpriteRender::sprite, SpriteRender::setSprite, "editor=Asset"),
A_PROPERTYEX(Vector4, color, SpriteRender::color, SpriteRender::setColor, "editor=Color"),
A_PROPERTY(string, item, SpriteRender::item, SpriteRender::setItem),
A_PROPERTY(Vector2, size, SpriteRender::size, SpriteRender::setSize),
A_PROPERTYEX(DrawMode, drawMode, SpriteRender::drawMode, SpriteRender::setDrawMode, "enum=DrawMode"),
A_PROPERTY(int, layer, SpriteRender::layer, SpriteRender::setLayer)
)
A_NOMETHODS()
A_ENUMS(
A_ENUM(DrawMode,
A_VALUE(Simple),
A_VALUE(Sliced),
A_VALUE(Tiled))
)
public:
enum DrawMode {
Simple = 0,
Sliced,
Tiled
};
public:
SpriteRender();
~SpriteRender();
Sprite *sprite() const;
void setSprite(Sprite *sprite);
Texture *texture() const;
void setTexture(Texture *texture);
Vector4 color() const;
void setColor(const Vector4 color);
string item() const;
void setItem(const string item);
Vector2 size() const;
void setSize(const Vector2 size);
int drawMode() const;
void setDrawMode(int mode);
int layer() const;
void setLayer(int layer);
void setMaterial(Material *material) override;
static bool composeMesh(Sprite *sprite, int key, Mesh *spriteMesh, Vector2 &size, int mode, bool resetSize, float scale = 1.0f);
private:
void draw(CommandBuffer &buffer, uint32_t layer) override;
AABBox localBound() const override;
void loadUserData(const VariantMap &data) override;
VariantMap saveUserData() const override;
void composeComponent() override;
int priority() const override;
void composeMesh(bool resetSize = false);
static bool composeSliced(Mesh *mesh, Vector2 &size, Vector3 &delta, float scale);
static bool composeTiled(Mesh *mesh, Vector2 &size, Vector3 &delta, float scale);
static void spriteUpdated(int state, void *ptr);
private:
string m_item;
Vector4 m_color;
Vector2 m_size;
Sprite *m_sprite;
Texture *m_texture;
Mesh *m_mesh;
Mesh *m_customMesh;
int m_hash;
int m_drawMode;
int m_layer;
};
#endif // SPRITERENDER