le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
sprite.hpp
Go to the documentation of this file.
1#pragma once
3#include "le2d/shape/quad.hpp"
5#include <kvf/aspect_resize.hpp>
6
7namespace le::drawable {
11class SpriteBase : public IDrawPrimitive {
12 public:
13 explicit SpriteBase(glm::vec2 const size = glm::vec2{200.0f}) { set_base_size(size); }
14
15 [[nodiscard]] auto to_primitive() const -> Primitive final;
16
17 [[nodiscard]] auto get_base_size() const -> glm::vec2 { return m_size; }
18 void set_base_size(glm::vec2 size);
19
20 [[nodiscard]] auto get_size() const -> glm::vec2 { return m_quad.get_size(); }
21
22 [[nodiscard]] auto get_origin() const -> glm::vec2 { return m_quad.get_origin(); }
23 void set_origin(glm::vec2 origin);
24
25 [[nodiscard]] auto get_uv() const -> kvf::UvRect { return m_quad.get_uv(); }
26 void set_uv(kvf::UvRect const& uv);
27
28 [[nodiscard]] auto get_texture() const -> ITextureBase const* { return m_texture; }
29 void set_texture(ITextureBase const* texture, kvf::UvRect const& uv = kvf::uv_rect_v);
30 void set_tile(ITileSheet const* sheet, TileId tile_id);
31
32 [[nodiscard]] auto get_resize_aspect() const -> kvf::ResizeAspect { return m_aspect; }
33 void set_resize_aspect(kvf::ResizeAspect aspect);
34
35 protected:
36 void update(glm::vec2 base_size, glm::vec2 origin, kvf::UvRect const& uv);
37
40 glm::vec2 m_size{};
41 kvf::ResizeAspect m_aspect{kvf::ResizeAspect::None};
42};
43
45class Sprite : public SingleDrawPrimitive<SpriteBase> {
46 public:
47 using SingleDrawPrimitive<SpriteBase>::SingleDrawPrimitive;
48
49 [[nodiscard]] auto bounding_rect() const -> kvf::Rect<> { return vertex_bounds(to_primitive().vertices, transform.to_model()); }
50};
51
53class InstancedSprite : public InstancedDrawPrimitive<SpriteBase> {
54 public:
55 using InstancedDrawPrimitive<SpriteBase>::InstancedDrawPrimitive;
56};
57} // namespace le::drawable
Interface for drawable primitives.
Definition draw_primitive.hpp:7
Interface for drawable texture.
Definition texture.hpp:15
Texture with a TileSet.
Definition texture.hpp:43
Base class for Draw Primitives using a vector of Render Instances.
Definition draw_primitive.hpp:26
Base class for Draw Primitives using a single Render Instance.
Definition draw_primitive.hpp:17
Instanced Sprite Draw Primitive.
Definition sprite.hpp:53
Base class for Sprite types.
Definition sprite.hpp:11
auto get_size() const -> glm::vec2
Definition sprite.hpp:20
auto to_primitive() const -> Primitive final
kvf::ResizeAspect m_aspect
Definition sprite.hpp:41
auto get_texture() const -> ITextureBase const *
Definition sprite.hpp:28
SpriteBase(glm::vec2 const size=glm::vec2{200.0f})
Definition sprite.hpp:13
ITextureBase const * m_texture
Definition sprite.hpp:39
void set_origin(glm::vec2 origin)
glm::vec2 m_size
Definition sprite.hpp:40
auto get_resize_aspect() const -> kvf::ResizeAspect
Definition sprite.hpp:32
void update(glm::vec2 base_size, glm::vec2 origin, kvf::UvRect const &uv)
void set_tile(ITileSheet const *sheet, TileId tile_id)
auto get_uv() const -> kvf::UvRect
Definition sprite.hpp:25
void set_resize_aspect(kvf::ResizeAspect aspect)
void set_base_size(glm::vec2 size)
shape::Quad m_quad
Definition sprite.hpp:38
auto get_origin() const -> glm::vec2
Definition sprite.hpp:22
auto get_base_size() const -> glm::vec2
Definition sprite.hpp:17
void set_texture(ITextureBase const *texture, kvf::UvRect const &uv=kvf::uv_rect_v)
void set_uv(kvf::UvRect const &uv)
Sprite Draw Primitive.
Definition sprite.hpp:45
auto bounding_rect() const -> kvf::Rect<>
Definition sprite.hpp:49
auto get_uv() const -> kvf::UvRect
auto get_origin() const -> glm::vec2
Definition quad.hpp:24
auto get_size() const -> glm::vec2
Definition quad.hpp:23
Quad Geometry.
Definition quad.hpp:31
Definition texture.hpp:9
Definition figure.hpp:6
auto vertex_bounds(std::span< Vertex const > vertices, glm::mat4 const &model) -> kvf::Rect<>
TileId
Unique identifier for a Tile.
Definition tile_id.hpp:6
Draw primitive.
Definition primitive.hpp:10
Transform transform
Definition render_instance.hpp:8
auto to_model() const -> glm::mat4