Euphoria
sprite.h
Go to the documentation of this file.
1 #pragma once
2 
3 
4 #include <map>
5 #include <memory>
6 
7 #include "base/vec2.h"
8 #include "base/vec3.h"
9 #include "base/rgb.h"
10 
11 namespace eu::render
12 {
13  struct Texture2;
14  struct SpriteRenderer;
15 
16  struct Sprite
17  {
18  std::shared_ptr<Texture2> texture;
22  Rgb color = Rgb(1.0f);
23  float alpha = 1.0f;
24 
25  explicit Sprite
26  (
27  std::shared_ptr<Texture2> texture,
28  const vec2f& position = zero2f
29  );
30 
31  void render(SpriteRenderer* render) const;
32 
33  [[nodiscard]] float get_height() const;
34  [[nodiscard]] float get_width() const;
35  };
36 
37 
38  struct Layer
39  {
40  using SpriteList = std::vector<Sprite*>;
41  using SpriteMap = std::map<std::shared_ptr<Texture2>, SpriteList>;
42 
45 
46  explicit Layer(SpriteRenderer* render);
47 
48  void add(Sprite* sprite);
49  void remove(Sprite* sprite);
50  void render();
51  };
52 }
constexpr vec2f zero2f
Definition: vec2.h:68
Definition: rgb.h:62
Layer(SpriteRenderer *render)
Definition: sprite.cc:60
SpriteMap texture_to_sprites
Definition: sprite.h:44
std::vector< Sprite * > SpriteList
Definition: sprite.h:40
void render()
Definition: sprite.cc:86
std::map< std::shared_ptr< Texture2 >, SpriteList > SpriteMap
Definition: sprite.h:41
SpriteRenderer * renderer
Definition: sprite.h:43
void add(Sprite *sprite)
Definition: sprite.cc:67
void remove(Sprite *sprite)
Definition: sprite.cc:74
Scale2f scale
Definition: sprite.h:21
float get_height() const
Definition: sprite.cc:26
void render(SpriteRenderer *render) const
Definition: sprite.cc:40
std::shared_ptr< Texture2 > texture
Definition: sprite.h:18
float get_width() const
Definition: sprite.cc:33
vec2f position
Definition: sprite.h:19
Sprite(std::shared_ptr< Texture2 > texture, const vec2f &position=zero2f)
Definition: sprite.cc:14
Angle rotation
Definition: sprite.h:20
Definition: vec2.h:33