OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
sprite.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <string>
8#include <glm/glm.hpp>
9
10#include "../ecs/component.hpp"
11#include "../ecs/system.hpp"
12
13#include "material.hpp"
14
15namespace Engine::Graphics {
17 struct Sprite : public ECS::Component {
20
22 glm::vec2 size = {1.0f, 1.0f};
23 };
24
28 std::vector<Graphics::Texture *> frames;
29
31 float frameDuration = 0.1f;
33 bool loop = true;
34 };
35
41 private:
42 std::unordered_map<std::string, SpriteAnimation> mAnimations;
43 std::string mCurrentAnimationName;
44 int mCurrentFrameIndex = 0;
45 float mTimer = 0.0f;
46 bool mPlaying = false;
47
48 public:
55 void AddAnimation(const std::string& name, const SpriteAnimation& animation);
62 SpriteAnimation& GetAnimation(const std::string& name);
68 void Play(const std::string& name, bool resetIfSame = false);
73 void Stop();
74
80 std::string GetCurrentAnimationName() const;
87 bool IsPlaying() const;
101 void Update(float dt);
102 };
103
105 public:
114 void OnUpdate(float deltaTime) override;
115 };
116}
Classe Component à dériver pour pouvoir être utilisée dans les systèmes ECS.
Definition component.hpp:18
La classe System implémente une logique spécifique à des composants.
Definition system.hpp:24
La classe Material définit un "material" graphique utilisé pour le rendu de meshes texturés.
Definition material.hpp:38
void OnUpdate(float deltaTime) override
Callback d'upadte du système d'animation de sprite.
Definition sprite.cpp:73
Composant ECS qui stocke plusieurs animations, et permet de jouer l'une ou l'autre avec des appels si...
Definition sprite.hpp:40
void Stop()
Permet d'arrêter l'animation en cours.
Definition sprite.cpp:27
void Update(float dt)
Mets à jour l'animator en fonction du temps écoulé depuis le dernier appel (passé en paramètre)
Definition sprite.cpp:51
void AddAnimation(const std::string &name, const SpriteAnimation &animation)
Enregistre une animation dans le SpriteAnimator actuel.
Definition sprite.cpp:4
void Play(const std::string &name, bool resetIfSame=false)
Permet de jouer l'animation désignée par le nom donnée.
Definition sprite.cpp:15
SpriteAnimation & GetAnimation(const std::string &name)
Renvoie l'objet SpriteAnimation demandé
Definition sprite.cpp:8
Graphics::Texture * GetCurrentFrame() const
Renvoie la texture associée à la frame actuelle dans l'animation en cours.
Definition sprite.cpp:39
std::string GetCurrentAnimationName() const
Permet de savoir quelle animation est actuellement en train d'être jouée.
Definition sprite.cpp:31
bool IsPlaying() const
Permet de savoir si l'Animator est en train de jouer une animation.
Definition sprite.cpp:35
Transporte un ID de texture OpenGL.
Definition texture.hpp:18
Définit un component de base dans le cadre d'un ECS.
Définit l'implémentation d'un Material.
Definition material.cpp:3
Structure de donnée contenant une liste de frames et des paramètres pour de l'animation.
Definition sprite.hpp:26
float frameDuration
Définit la durée (en seconde) d'une frame à l'écran.
Definition sprite.hpp:31
std::vector< Graphics::Texture * > frames
Liste de frames (Textures) à utiliser pendant l'animation, dans l'ordre d'animation.
Definition sprite.hpp:28
bool loop
Si true, indique au système d'animation qu'elle doit être répétée une fois arrivée à la dernière fram...
Definition sprite.hpp:33
Structure de donnée contenant de quoi afficher un sprite à l'écran.
Definition sprite.hpp:17
glm::vec2 size
Taille du sprite à afficher.
Definition sprite.hpp:22
Graphics::Material material
Le material utilisé pour le rendu du sprite (textures + shader)
Definition sprite.hpp:19
Définit la manière dont le Système se comporte dans l'architecture ECS.