Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
sprite_node.h
Go to the documentation of this file.
1 #pragma once
2 #include "node.h"
3 
13 class Sprite2D final : public Node2D {
14 
15 public:
16 
17  explicit Sprite2D(const std::weak_ptr<Texture>& tex, const Color col = Color(255, 255, 255, 255), const glm::vec2 size = {0, 0})
18  : _texture(tex), _size(size), _color(col) {
19  }
20 
21  [[nodiscard]] Rect2 get_region() const;
22 
23  void set_region(const Rect2& region, glm::vec2 size);
24 
25  void set_color(const Color& col);
26 
27  void ready() override;
28 
29  void process(double delta_time) override;
30 
31  void draw(Renderer* renderer) override;
32 
33  void input(const InputManager* input) override;
34 
35  void set_flip_horizontal(bool flip) { _flip_h = flip; }
36  void set_flip_vertical(bool flip) { _flip_v = flip; }
37 
38  bool is_flipped_horizontal() const { return _flip_h; }
39  bool is_flipped_vertical() const { return _flip_v; }
40 
41  glm::vec2 get_size() const { return _size; }
42 
43  void set_texture(const std::weak_ptr<Texture>& tex) {
44  _texture = tex;
45  }
46 
47  void draw_hierarchy() override;
48 
49  void draw_inspector() override;
50 
51 private:
52  std::weak_ptr<Texture> _texture;
53  glm::vec2 _size = glm::vec2(0.f);
54  Color _color = {255, 255, 255, 255};
55  Rect2 _source = {};
56  Rect2 _dest = {};
57  glm::vec2 _origin = {};
58  bool _use_region = false;
59 
60  bool _flip_h = false;
61  bool _flip_v = false;
62 };
Definition: input_manager.h:117
2D Node base class for scene graph.
Definition: node.h:25
Base class for all renderers.
Definition: ember_core.h:109
2D Sprite Node
Definition: sprite_node.h:13
void set_flip_horizontal(bool flip)
Definition: sprite_node.h:35
Sprite2D(const std::weak_ptr< Texture > &tex, const Color col=Color(255, 255, 255, 255), const glm::vec2 size={0, 0})
Definition: sprite_node.h:17
void draw(Renderer *renderer) override
Definition: sprite_node.cpp:52
void set_flip_vertical(bool flip)
Definition: sprite_node.h:36
void set_region(const Rect2 &region, glm::vec2 size)
Definition: sprite_node.cpp:10
Rect2 get_region() const
Definition: sprite_node.cpp:6
void draw_hierarchy() override
Definition: sprite_node.cpp:88
glm::vec2 get_size() const
Definition: sprite_node.h:41
void ready() override
Definition: sprite_node.cpp:21
void process(double delta_time) override
Definition: sprite_node.cpp:48
bool is_flipped_vertical() const
Definition: sprite_node.h:39
bool is_flipped_horizontal() const
Definition: sprite_node.h:38
void set_color(const Color &col)
Definition: sprite_node.cpp:17
void input(const InputManager *input) override
Definition: sprite_node.cpp:84
void draw_inspector() override
Definition: sprite_node.cpp:92
void set_texture(const std::weak_ptr< Texture > &tex)
Definition: sprite_node.h:43
Color struct.
Definition: engine_structs.h:85
Float rectangle struct.
Definition: engine_structs.h:33