TazGraph Project v0.1.0
Loading...
Searching...
No Matches
MovingAnimatorComponent.h
1#pragma once
2
3
4#include "../Components.h"
5#include <map>
6#include "Animation.h"
7#include "AnimatorManager.h"
8
9class MovingAnimatorComponent : public Component //Animator -> Sprite -> Transform
10{
11public:
12 //std::map<const char*, Animation> animations; //Animator Manager
14 std::string animationName = "";
15
17 {
18
19 }
20
22 {
23
24 }
25
26 void init() override
27 {
28 if (!entity->hasComponent<TransformComponent>())
29 {
31 }
32 transform = &entity->GetComponent<TransformComponent>();
33
34 Play("Default");
35 }
36
37 void update(float deltaTime) override
38 {
39 if (animationName == "Default") return;
40
41 if (transform->moving_animation.hasFinished()) { // playing again animation
42 transform->moving_animation.finished = false;
43 transform->moving_animation.times_played = 0;
44 resetAnimation();
45 }
46
47 transform->moving_animation.advanceFrame(deltaTime);
48
49
50 transform->setMoveFrame();
51
52 }
53
54 void draw(size_t e_index, PlaneModelRenderer& batch, TazGraphEngine::Window& window) override
55 {
56 //sprite->draw();
57 }
58
59 void Play(const char* animName, int reps = 0)
60 {
61 AnimatorManager& animManager = AnimatorManager::getInstance();
62 animationName = animName;
63 transform->SetMovingAnimation(
64 transform->getPosition(),
65 animManager.moving_animations[animationName].total_frames, animManager.moving_animations[animationName].speed,
66 animManager.moving_animations[animationName].type,
67 animManager.moving_animations[animationName].distance, animManager.moving_animations[animationName].dest_rotation, // here needs to be vector
68 reps ? reps : animManager.moving_animations[animationName].reps
69 );
70 }
71
72 void Play(const char* animName, glm::vec3 m_distance, int reps = 0)
73 {
74 AnimatorManager& animManager = AnimatorManager::getInstance();
75 animationName = animName;
76 transform->SetMovingAnimation(
77
78 transform->getPosition(),
79
80 animManager.moving_animations[animationName].total_frames, animManager.moving_animations[animationName].speed,
81 animManager.moving_animations[animationName].type,
82 m_distance, animManager.moving_animations[animationName].dest_rotation, // here needs to be vector
83 reps ? reps : animManager.moving_animations[animationName].reps
84 );
85 }
86
87 void resetAnimation() {
88 transform->moving_animation.resetFrameIndex();
89
90 AnimatorManager& animManager = AnimatorManager::getInstance();
91 animationName = "Default";
92 transform->SetMovingAnimation(
93 transform->getPosition(),
94 animManager.moving_animations[animationName].total_frames, animManager.moving_animations[animationName].speed,
95 animManager.moving_animations[animationName].type,
96 animManager.moving_animations[animationName].distance, animManager.moving_animations[animationName].dest_rotation);
97 }
98
99 std::string getPlayName()
100 {
101 return animationName;
102 }
103
104};
Definition GECS.h:131
T & addComponent(TArgs &&... mArgs)
have addScript function
Definition GECS.h:345
Definition MovingAnimatorComponent.h:10
TransformComponent * transform
also we use MovingAnimator instead of simple Animator so that entities use less memory and we use it ...
Definition MovingAnimatorComponent.h:13
Definition PlaneModelRenderer.h:15
Definition Window.h:12
Definition TransformComponent.h:7
Definition AnimatorManager.h:10