Polyphase Game Engine
Loading...
Searching...
No Matches
TransformAnimationNode3d.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 Node3D;
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 // Playback control
32 void Play();
33 void Play(TransformAnimationAsset* asset);
34 void Pause();
35 void StopPlayback();
36
39
40 void SetKeyframes(const std::vector<TransformKeyframe>& keyframes);
41 const std::vector<TransformKeyframe>& GetInlineKeyframes() const { return mInlineKeyframes; }
42
43 void SetTime(float time);
44 float GetTime() const { return mCurrentTime; }
45 float GetDuration() const;
46 float GetProgress() const;
47
48 bool IsPlaying() const { return mPlaying; }
49 bool IsPaused() const { return mPaused; }
50
51 void SetLoop(bool loop) { mLoop = loop; }
52 bool IsLooping() const { return mLoop; }
53
54 void SetPlayRate(float rate) { mPlayRate = rate; }
55 float GetPlayRate() const { return mPlayRate; }
56
57 void SetPlayOnStart(bool play) { mPlayOnStart = play; }
58 bool GetPlayOnStart() const { return mPlayOnStart; }
59
60 void SetTargetNode(Node3D* target);
61 Node3D* GetTargetNode() const;
62
63 void ApplyKeyframe(const TransformKeyframe& kf);
65
66 // Authoring helpers — seed a TransformKeyframe from the target Node3D's
67 // current world-space transform and append it to either the bound asset
68 // or the inline keyframes vector.
71
72#if EDITOR
73 virtual bool DrawCustomProperty(Property& prop) override;
74#endif
75
76protected:
77
79
80
81 void EvaluateAtTime(float time);
82 TransformKeyframe SampleSource(float time) const;
83 const std::vector<TransformKeyframe>* GetActiveKeyframes() const;
84 float GetActiveDuration() const;
85
87 std::vector<TransformKeyframe> mInlineKeyframes;
88
90
91 float mCurrentTime = 0.0f;
92 float mPlayRate = 1.0f;
93 bool mPlaying = false;
94 bool mPaused = false;
95 bool mLoop = false;
96 bool mPlayOnStart = false;
97
98 int32_t mLastFiredKeyframe = -1;
99
100#if EDITOR
101 void StartPreview();
102 void StopPreview();
103
104 bool mEditorPreviewing = false;
105 bool mEditorPreviewSnapshotValid = false;
106 glm::vec3 mEditorPreviewSavedPos = glm::vec3(0.0f);
107 glm::quat mEditorPreviewSavedRot = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
108 glm::vec3 mEditorPreviewSavedScale = glm::vec3(1.0f);
109#endif
110};
Definition AssetRef.h:18
Definition Node3d.h:14
Definition Node.h:67
virtual bool DrawCustomProperty(Property &prop)
Definition Object.h:46
Definition Property.h:14
Definition TransformAnimationAsset.h:10
Definition TransformAnimationNode3d.h:13
virtual void Start() override
Definition TransformAnimationNode3d.cpp:106
const std::vector< TransformKeyframe > * GetActiveKeyframes() const
Definition TransformAnimationNode3d.cpp:312
TransformAnimationAsset * GetAnimation() const
Definition TransformAnimationNode3d.cpp:226
const std::vector< TransformKeyframe > & GetInlineKeyframes() const
Definition TransformAnimationNode3d.h:41
void SetLoop(bool loop)
Definition TransformAnimationNode3d.h:51
virtual const char * GetTypeName() const override
Definition TransformAnimationNode3d.cpp:184
TransformKeyframe SampleNow() const
Definition TransformAnimationNode3d.cpp:269
float GetDuration() const
Definition TransformAnimationNode3d.cpp:242
Node3D * GetTargetNode() const
Definition TransformAnimationNode3d.cpp:258
float GetTime() const
Definition TransformAnimationNode3d.h:44
float mCurrentTime
Definition TransformAnimationNode3d.h:91
DECLARE_NODE(TransformAnimationNode3D, Node)
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition TransformAnimationNode3d.cpp:162
virtual void Stop() override
Definition TransformAnimationNode3d.cpp:116
virtual void Create() override
Definition TransformAnimationNode3d.cpp:24
void SetKeyframes(const std::vector< TransformKeyframe > &keyframes)
Definition TransformAnimationNode3d.cpp:231
bool IsLooping() const
Definition TransformAnimationNode3d.h:52
void Play()
Definition TransformAnimationNode3d.cpp:189
void SetTargetNode(Node3D *target)
Definition TransformAnimationNode3d.cpp:253
virtual void EditorTick(float deltaTime) override
Definition TransformAnimationNode3d.cpp:75
TransformAnimationNode3D()
Definition TransformAnimationNode3d.cpp:15
void SetPlayRate(float rate)
Definition TransformAnimationNode3d.h:54
bool mPlayOnStart
Definition TransformAnimationNode3d.h:96
void Pause()
Definition TransformAnimationNode3d.cpp:208
virtual void Tick(float deltaTime) override
Definition TransformAnimationNode3d.cpp:34
WeakPtr< Node > mTarget
Definition TransformAnimationNode3d.h:89
float GetActiveDuration() const
Definition TransformAnimationNode3d.cpp:326
bool mPaused
Definition TransformAnimationNode3d.h:94
bool IsPlaying() const
Definition TransformAnimationNode3d.h:48
bool GetPlayOnStart() const
Definition TransformAnimationNode3d.h:58
bool mPlaying
Definition TransformAnimationNode3d.h:93
float GetProgress() const
Definition TransformAnimationNode3d.cpp:247
TransformKeyframe MakeKeyframeFromTarget() const
Definition TransformAnimationNode3d.cpp:340
TransformKeyframe SampleSource(float time) const
Definition TransformAnimationNode3d.cpp:274
void SetPlayOnStart(bool play)
Definition TransformAnimationNode3d.h:57
void AddInlineKeyframeFromTarget()
Definition TransformAnimationNode3d.cpp:379
void SetAnimation(TransformAnimationAsset *asset)
Definition TransformAnimationNode3d.cpp:221
virtual ~TransformAnimationNode3D()
Definition TransformAnimationNode3d.cpp:20
void AddKeyframeFromTarget()
Definition TransformAnimationNode3d.cpp:353
float GetPlayRate() const
Definition TransformAnimationNode3d.h:55
void EvaluateAtTime(float time)
Definition TransformAnimationNode3d.cpp:453
std::vector< TransformKeyframe > mInlineKeyframes
Definition TransformAnimationNode3d.h:87
virtual void Destroy() override
Definition TransformAnimationNode3d.cpp:29
int32_t mLastFiredKeyframe
Definition TransformAnimationNode3d.h:98
void SetTime(float time)
Definition TransformAnimationNode3d.cpp:236
bool mLoop
Definition TransformAnimationNode3d.h:95
float mPlayRate
Definition TransformAnimationNode3d.h:92
TransformAnimationRef mAnimation
Definition TransformAnimationNode3d.h:86
void ApplyKeyframe(const TransformKeyframe &kf)
Definition TransformAnimationNode3d.cpp:264
void StopPlayback()
Definition TransformAnimationNode3d.cpp:213
bool IsPaused() const
Definition TransformAnimationNode3d.h:49
Definition SmartPointer.h:312
Definition TimelineTypes.h:18