Fireworks Engine  v2.0
Lightweight Sandbox Game Engine using OpenGL for additional Customisation and Quick Prototyping
sprite.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "renderable2d.h"
4 #include "../../utils/timer.h"
5 
6 namespace fireworks { namespace graphics {
7 
9  enum class SpriteAnimationType
10  {
11  LOOP,
12  REVERSE,
13  PING_PONG
14  };
15 
17  class Sprite : public Renderable2D
18  {
19  public:
23 mutable std::uint32_t frame;
27  std::uint32_t frameRate;
29  glm::vec3& position;
31  glm::vec4& color;
33  glm::vec2& size;
35  float& rotation;
36  private:
37  glm::vec2 m_SpriteSheetDimension;
38  utils::Timer* m_AnimTimer;
39  double m_CurrentFrameRate;
40  public:
42  Sprite();
43  // To use with BatchRenderer
51  Sprite(glm::vec3 position, glm::vec2 size, glm::vec4 color, Primitive2D primitive2d = Primitive2D::Quad);
60  Sprite(glm::vec3 position, glm::vec2 size, Texture* texture, Primitive2D primitive2d = Primitive2D::Quad);
71  Sprite(glm::vec3 position, glm::vec2 size, Texture* texture, glm::vec2 sheetDimension, Primitive2D primitive2d = Primitive2D::Quad);
72 
73  // To use with a SimpleRenderer aka Instance Renderer
82  Sprite(glm::vec3 position, glm::vec2 size, glm::vec4 color, Shader* shader, Primitive2D primitive2d = Primitive2D::Quad);
92  Sprite(glm::vec3 position, glm::vec2 size, Shader* shader,Texture* texture, Primitive2D primitive2d = Primitive2D::Quad);\
104  Sprite(glm::vec3 position, glm::vec2 size, Shader* shader, Texture* texture, glm::vec2 sheetDimension, Primitive2D primitive2d = Primitive2D::Quad);
105 
107  void addedRigidBody2D() override;
108 
114  void animateSprite(uint32_t frameRate, SpriteAnimationType animType);
115 
117  inline const float getTotalFrames() const { return (m_SpriteSheetDimension.x * m_SpriteSheetDimension.y); }
118  private:
119  void submit(Renderer2D* renderer) const override;
120  void setSpriteSheetUV() const;
121  };
122 } }
float & rotation
The rotation of the Sprite.
Definition: sprite.h:35
SpriteAnimationType
The type of sprite sheet animation.
Definition: sprite.h:9
Timer class to keep track of the time.
Definition: timer.h:8
glm::vec4 & color
The color of the Sprite.
Definition: sprite.h:31
The Class responsible for drawing the basic Renderable objects onto the screen.
Definition: renderable2d.h:36
The class responsible for loading Textures.
Definition: texture.h:11
std::uint32_t frame
The frame number in the sprite sheet.
Definition: sprite.h:23
std::uint32_t frameRate
The rate at which the frames are displayed.
Definition: sprite.h:27
Definition: audioclip.cpp:3
glm::vec3 & position
The position of the Sprite.
Definition: sprite.h:29
The class responsible for creating amazing shaders.
Definition: Shader.h:22
The class responsible for drawing the Sprites in the scene.
Definition: sprite.h:17
Primitive2D
Different variations of primitives.
Definition: renderable2d.h:26
Forward declaration of the graphics::Renderable2D.
Definition: renderer2d.h:15
glm::vec2 & size
The size of the Sprite.
Definition: sprite.h:33
const float getTotalFrames() const
Gets the total frames in the sprite sheet.
Definition: sprite.h:117