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// TODO: in comparison to AnimatorComponent, here we also have access to sprite so create functions like SetDx,SetDy,SetRepsOfMove,SetDelayOfMove, IsForeverRepeatedMove
9
10class MovingAnimatorComponent : public AnimatorComponent //Animator -> Sprite -> Transform
11{
12public:
13 //std::map<const char*, Animation> animations; //Animator Manager
14
19
20 MovingAnimatorComponent(std::string id) : AnimatorComponent(id)
21 {
22
23 }
24
26 {
27
28 }
29
30 void init() override
31 {
32 if (!entity->hasComponent<SpriteComponent>())
33 {
34 entity->addComponent<SpriteComponent>(textureid);
35 }
36 sprite = &entity->GetComponent<SpriteComponent>();
37
38 Play("Default");
39 sprite->setTex(textureid);
40 }
41
42 void update(float deltaTime) override
43 {
44 if (sprite->moving_animation.hasFinished()) { // playing again animation
45 sprite->moving_animation.finished = false;
46 sprite->moving_animation.times_played = 0;
47 resetAnimation();
48 }
49
50 sprite->transform->setPosition_X(sprite->transform->getPosition().x); //make player move with the camera, being stable in centre, except on edges
51 sprite->transform->setPosition_Y(sprite->transform->getPosition().y);
52
53 sprite->moving_animation.advanceFrame(deltaTime);
54 if (sprite->moving_animation.positions.size() == 1) {
55 sprite->setMoveFrame();
56 }
57 else {
58 sprite->setSpecificMoveFrame();
59 }
60 }
61
62 void draw(size_t e_index, PlaneModelRenderer& batch, TazGraphEngine::Window& window) override
63 {
64 //sprite->draw();
65 }
66
67 void Play(const char* animName, int reps = 0)
68 {
69 AnimatorManager& animManager = AnimatorManager::getInstance();
70 animationName = animName;
71 sprite->SetMovingAnimation(
72 animManager.moving_animations[animationName].indexX, animManager.moving_animations[animationName].indexY,
73 animManager.moving_animations[animationName].total_frames, animManager.moving_animations[animationName].speed,
74 animManager.moving_animations[animationName].type,
75 animManager.moving_animations[animationName].positions, animManager.moving_animations[animationName].zIndices, animManager.moving_animations[animationName].rotations, // here needs to be vector
76 reps ? reps : animManager.moving_animations[animationName].reps
77 );
78 }
79
80 void resetAnimation() {
81 AnimatorManager& animManager = AnimatorManager::getInstance();
82 animationName = "Default";
83 sprite->SetMovingAnimation(
84 animManager.moving_animations[animationName].indexX, animManager.moving_animations[animationName].indexY,
85 animManager.moving_animations[animationName].total_frames, animManager.moving_animations[animationName].speed,
86 animManager.moving_animations[animationName].type,
87 animManager.moving_animations[animationName].positions, animManager.moving_animations[animationName].zIndices, animManager.moving_animations[animationName].rotations);
88 }
89
90 std::string getPlayName()
91 {
92 return animationName;
93 }
94
95 void DestroyTex()
96 {
97 sprite->DestroyTex();
98 }
99
100};
Definition AnimatorComponent.h:13
T & addComponent(TArgs &&... mArgs)
have addScript function
Definition GECS.h:239
Definition MovingAnimatorComponent.h:11
MovingAnimatorComponent()
also we use MovingAnimator instead of simple Animator so that entities use less memory and we use it ...
Definition MovingAnimatorComponent.h:15
Definition PlaneModelRenderer.h:21
Definition SpriteComponent.h:17
Definition Window.h:18
Definition AnimatorManager.h:10