Polyphase Game Engine
Loading...
Searching...
No Matches
AnimatedWidget.h
Go to the documentation of this file.
1#pragma once
2
5#include "AssetRef.h"
6
7#include "glm/glm.hpp"
8
9#include <string>
10#include <vector>
11
12class Texture;
13class SpriteAnimation;
14
15// A Quad that plays sprite animations on itself. Combines the rendering of
16// Quad with the playback engine of SpriteAnimator into a single node — drop
17// it in, assign animations, and it shows them. No sibling SpriteAnimator or
18// glue script needed.
20{
21public:
22
24
26 virtual ~AnimatedWidget();
27
28 virtual const char* GetTypeName() const override;
29 virtual void GatherProperties(std::vector<Property>& outProps) override;
30
31 virtual void Create() override;
32 virtual void Destroy() override;
33 virtual void Start() override;
34 virtual void Tick(float deltaTime) override;
35 virtual void EditorTick(float deltaTime) override;
36
37 // Playback API mirrors SpriteAnimator.
38 void Play();
39 void Pause();
40 void Stop();
41 void PlayAnimation(const std::string& name);
42 void SetFrame(int32_t frameIndex);
43 bool AnimateTo(int32_t targetFrame, bool pauseOnFinished, const ScriptFunc& onFinished);
44 bool AnimateToProgress(float progress, bool pauseOnFinished, const ScriptFunc& onFinished);
45 void CancelAnimateTo() { mPlayback.CancelAnimateTo(); }
46 void SetSpeed(float speed);
47 float GetSpeed() const { return mPlayback.mPlaybackSpeed; }
48 bool IsPlaying() const { return mPlayback.mPlaying; }
49
50 void SetAutoPlay(bool v) { mPlayback.mAutoPlay = v; }
51 bool GetAutoPlay() const { return mPlayback.mAutoPlay; }
52 void SetLoopOverride(bool v) { mPlayback.mLoopOverride = v; }
53 bool GetLoopOverride() const { return mPlayback.mLoopOverride; }
54 void SetDefaultAnimation(const std::string& name) { mPlayback.mDefaultAnimation = name; }
55 const std::string& GetDefaultAnimation() const { return mPlayback.mDefaultAnimation; }
56
57 void AddAnimation(SpriteAnimation* asset) { mPlayback.AddAnimationAsset(asset); }
58 void AddAnimation(const std::string& path) { mPlayback.AddAnimationByPath(path); }
59 void CreateAnimation(const std::string& name) { mPlayback.CreateAnimation(name); }
60 void CreateAnimation(const std::string& name, const std::vector<Texture*>& frames)
61 { mPlayback.CreateAnimation(name, frames); }
62 void AddImage(const std::string& name, Texture* tex) { mPlayback.AddImage(name, tex); }
63 void AddImage(const std::string& name, const std::string& path)
64 { mPlayback.AddImage(name, path); }
65 void AddImages(const std::string& name, const std::vector<std::string>& paths)
66 { mPlayback.AddImages(name, paths); }
67 void RemoveAnimation(const std::string& name) { mPlayback.RemoveAnimation(name); }
68 bool HasAnimation(const std::string& name) const { return mPlayback.HasAnimation(name); }
69
70 float GetProgress() const { return mPlayback.GetProgress(); }
71 Texture* GetCurrentTexture() const { return mPlayback.GetCurrentTexture(); }
72 int32_t GetCurrentFrameIndex() const { return mPlayback.mCurrentFrame; }
73 const std::string& GetCurrentAnimationName() const { return mPlayback.mCurrentName; }
74
75 bool GetEditorPreview() const { return mEditorPreview; }
76 void SetEditorPreview(bool v) { mEditorPreview = v; }
77
78protected:
79
80 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
81
82 // Push the playback's current frame to this Quad's texture + UV.
83 void ApplyCurrentFrameToSelf();
84
86 bool mEditorPreview = false;
87 bool mEditorPlayButton = false;
88 bool mEditorStopButton = false;
89};
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AnimatedWidget.h:20
Texture * GetCurrentTexture() const
Definition AnimatedWidget.h:71
const std::string & GetDefaultAnimation() const
Definition AnimatedWidget.h:55
void AddAnimation(const std::string &path)
Definition AnimatedWidget.h:58
void CreateAnimation(const std::string &name)
Definition AnimatedWidget.h:59
const std::string & GetCurrentAnimationName() const
Definition AnimatedWidget.h:73
void AddImage(const std::string &name, const std::string &path)
Definition AnimatedWidget.h:63
void SetDefaultAnimation(const std::string &name)
Definition AnimatedWidget.h:54
void CancelAnimateTo()
Definition AnimatedWidget.h:45
float GetProgress() const
Definition AnimatedWidget.h:70
void AddImage(const std::string &name, Texture *tex)
Definition AnimatedWidget.h:62
bool IsPlaying() const
Definition AnimatedWidget.h:48
bool GetLoopOverride() const
Definition AnimatedWidget.h:53
float GetSpeed() const
Definition AnimatedWidget.h:47
void SetEditorPreview(bool v)
Definition AnimatedWidget.h:76
void AddImages(const std::string &name, const std::vector< std::string > &paths)
Definition AnimatedWidget.h:65
void SetAutoPlay(bool v)
Definition AnimatedWidget.h:50
void AddAnimation(SpriteAnimation *asset)
Definition AnimatedWidget.h:57
void CreateAnimation(const std::string &name, const std::vector< Texture * > &frames)
Definition AnimatedWidget.h:60
bool GetEditorPreview() const
Definition AnimatedWidget.h:75
bool GetAutoPlay() const
Definition AnimatedWidget.h:51
void SetLoopOverride(bool v)
Definition AnimatedWidget.h:52
void RemoveAnimation(const std::string &name)
Definition AnimatedWidget.h:67
int32_t GetCurrentFrameIndex() const
Definition AnimatedWidget.h:72
SpriteAnimPlayback mPlayback
Definition AnimatedWidget.h:85
DECLARE_NODE(AnimatedWidget, Quad)
bool HasAnimation(const std::string &name) const
Definition AnimatedWidget.h:68
Definition Datum.h:164
virtual void EditorTick(float deltaTime)
Definition Node.cpp:563
virtual void Stop()
Definition Node.cpp:504
virtual void Tick(float deltaTime)
Definition Node.cpp:558
virtual const char * GetTypeName() const
Definition Node.cpp:1513
Definition Quad.h:20
virtual void Create() override
Definition Quad.cpp:56
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Quad.cpp:82
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition Quad.cpp:23
virtual void Destroy() override
Definition Quad.cpp:64
Definition ScriptFunc.h:10
Definition SpriteAnimPlayback.h:40
Definition SpriteAnimation.h:31
Definition Texture.h:10
virtual void Start() override
Definition Widget.cpp:110