Polyphase Game Engine
Loading...
Searching...
No Matches
TransformAnimationWidget.h
Go to the documentation of this file.
1#pragma once
2
3#include "Nodes/Node.h"
4#include "AssetRef.h"
6
7#include <vector>
8
10class Widget;
11
13{
14public:
15
17
20
21 virtual void Create() override;
22 virtual void Destroy() override;
23 virtual void Tick(float deltaTime) override;
24 virtual void EditorTick(float deltaTime) override;
25 virtual void Start() override;
26 virtual void Stop() override;
27
28 virtual void GatherProperties(std::vector<Property>& outProps) override;
29 virtual const char* GetTypeName() const override;
30
31 void Play();
32 void Play(TransformAnimationAsset* asset);
33 void Pause();
34 void StopPlayback();
35
38
39 void SetKeyframes(const std::vector<TransformKeyframe>& keyframes);
40 const std::vector<TransformKeyframe>& GetInlineKeyframes() const { return mInlineKeyframes; }
41
42 void SetTime(float time);
43 float GetTime() const { return mCurrentTime; }
44 float GetDuration() const;
45 float GetProgress() const;
46
47 bool IsPlaying() const { return mPlaying; }
48 bool IsPaused() const { return mPaused; }
49
50 void SetLoop(bool loop) { mLoop = loop; }
51 bool IsLooping() const { return mLoop; }
52
53 void SetPlayRate(float rate) { mPlayRate = rate; }
54 float GetPlayRate() const { return mPlayRate; }
55
56 void SetPlayOnStart(bool play) { mPlayOnStart = play; }
57 bool GetPlayOnStart() const { return mPlayOnStart; }
58
59 void SetTargetWidget(Widget* target);
60 Widget* GetTargetWidget() const;
61
62 void ApplyKeyframe(const TransformKeyframe& kf);
64
65 // Authoring helpers — seed a TransformKeyframe from the target Widget's
66 // current 2D transform (Z=0, X/Y rotation = 0) and append it to either
67 // the bound asset or the inline keyframes vector.
70
71#if EDITOR
72 virtual bool DrawCustomProperty(Property& prop) override;
73#endif
74
75protected:
76
78
79
80 void EvaluateAtTime(float time);
81 TransformKeyframe SampleSource(float time) const;
82 const std::vector<TransformKeyframe>* GetActiveKeyframes() const;
83 float GetActiveDuration() const;
84
86 std::vector<TransformKeyframe> mInlineKeyframes;
87
89
90 float mCurrentTime = 0.0f;
91 float mPlayRate = 1.0f;
92 bool mPlaying = false;
93 bool mPaused = false;
94 bool mLoop = false;
95 bool mPlayOnStart = false;
96
97 int32_t mLastFiredKeyframe = -1;
98
99#if EDITOR
100 void StartPreview();
101 void StopPreview();
102
103 bool mEditorPreviewing = false;
104 bool mEditorPreviewSnapshotValid = false;
105 glm::vec2 mEditorPreviewSavedPos = glm::vec2(0.0f);
106 float mEditorPreviewSavedRot = 0.0f;
107 glm::vec2 mEditorPreviewSavedScale = glm::vec2(1.0f);
108#endif
109};
Definition AssetRef.h:18
Definition Node.h:67
virtual bool DrawCustomProperty(Property &prop)
Definition Object.h:46
Definition Property.h:14
Definition TransformAnimationAsset.h:10
Definition TransformAnimationWidget.h:13
bool mLoop
Definition TransformAnimationWidget.h:94
const std::vector< TransformKeyframe > & GetInlineKeyframes() const
Definition TransformAnimationWidget.h:40
virtual void Create() override
Definition TransformAnimationWidget.cpp:24
bool GetPlayOnStart() const
Definition TransformAnimationWidget.h:57
virtual const char * GetTypeName() const override
Definition TransformAnimationWidget.cpp:183
WeakPtr< Node > mTarget
Definition TransformAnimationWidget.h:88
Widget * GetTargetWidget() const
Definition TransformAnimationWidget.cpp:257
float GetDuration() const
Definition TransformAnimationWidget.cpp:241
const std::vector< TransformKeyframe > * GetActiveKeyframes() const
Definition TransformAnimationWidget.cpp:308
TransformKeyframe SampleSource(float time) const
Definition TransformAnimationWidget.cpp:273
virtual void Start() override
Definition TransformAnimationWidget.cpp:106
float GetPlayRate() const
Definition TransformAnimationWidget.h:54
bool IsPaused() const
Definition TransformAnimationWidget.h:48
virtual void Stop() override
Definition TransformAnimationWidget.cpp:115
TransformKeyframe MakeKeyframeFromTarget() const
Definition TransformAnimationWidget.cpp:336
TransformKeyframe SampleNow() const
Definition TransformAnimationWidget.cpp:268
void SetTime(float time)
Definition TransformAnimationWidget.cpp:235
float GetActiveDuration() const
Definition TransformAnimationWidget.cpp:322
int32_t mLastFiredKeyframe
Definition TransformAnimationWidget.h:97
void ApplyKeyframe(const TransformKeyframe &kf)
Definition TransformAnimationWidget.cpp:263
virtual ~TransformAnimationWidget()
Definition TransformAnimationWidget.cpp:20
void SetPlayRate(float rate)
Definition TransformAnimationWidget.h:53
bool IsLooping() const
Definition TransformAnimationWidget.h:51
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition TransformAnimationWidget.cpp:161
float GetProgress() const
Definition TransformAnimationWidget.cpp:246
float GetTime() const
Definition TransformAnimationWidget.h:43
bool mPaused
Definition TransformAnimationWidget.h:93
void StopPlayback()
Definition TransformAnimationWidget.cpp:212
virtual void Destroy() override
Definition TransformAnimationWidget.cpp:29
void SetLoop(bool loop)
Definition TransformAnimationWidget.h:50
void Pause()
Definition TransformAnimationWidget.cpp:207
void AddKeyframeFromTarget()
Definition TransformAnimationWidget.cpp:351
DECLARE_NODE(TransformAnimationWidget, Node)
std::vector< TransformKeyframe > mInlineKeyframes
Definition TransformAnimationWidget.h:86
void SetPlayOnStart(bool play)
Definition TransformAnimationWidget.h:56
void EvaluateAtTime(float time)
Definition TransformAnimationWidget.cpp:451
TransformAnimationAsset * GetAnimation() const
Definition TransformAnimationWidget.cpp:225
void SetKeyframes(const std::vector< TransformKeyframe > &keyframes)
Definition TransformAnimationWidget.cpp:230
bool mPlayOnStart
Definition TransformAnimationWidget.h:95
void AddInlineKeyframeFromTarget()
Definition TransformAnimationWidget.cpp:377
void SetTargetWidget(Widget *target)
Definition TransformAnimationWidget.cpp:252
float mCurrentTime
Definition TransformAnimationWidget.h:90
virtual void Tick(float deltaTime) override
Definition TransformAnimationWidget.cpp:34
TransformAnimationRef mAnimation
Definition TransformAnimationWidget.h:85
float mPlayRate
Definition TransformAnimationWidget.h:91
virtual void EditorTick(float deltaTime) override
Definition TransformAnimationWidget.cpp:75
void Play()
Definition TransformAnimationWidget.cpp:188
void SetAnimation(TransformAnimationAsset *asset)
Definition TransformAnimationWidget.cpp:220
bool IsPlaying() const
Definition TransformAnimationWidget.h:47
TransformAnimationWidget()
Definition TransformAnimationWidget.cpp:15
bool mPlaying
Definition TransformAnimationWidget.h:92
Definition SmartPointer.h:312
Definition Widget.h:53
Definition TimelineTypes.h:18