Polyphase Game Engine
Loading...
Searching...
No Matches
TimelineTrack.h
Go to the documentation of this file.
1#pragma once
2
3#include "Factory.h"
4#include "Object.h"
5#include "Property.h"
6#include "Stream.h"
8
9#include <string>
10#include <vector>
11
12class Node;
14
15#define DECLARE_TRACK(Class, Parent) \
16 DECLARE_FACTORY(Class, TimelineTrack); \
17 DECLARE_OBJECT(Class, Parent); \
18 typedef Parent Super;
19
20#define DEFINE_TRACK(Class) \
21 DEFINE_FACTORY(Class, TimelineTrack); \
22 DEFINE_OBJECT(Class);
23
24class TimelineTrack : public Object
25{
26public:
27
31
33 virtual ~TimelineTrack();
34
35 virtual void SaveStream(Stream& stream);
36 virtual void LoadStream(Stream& stream, uint32_t version);
37
38 virtual void GatherProperties(std::vector<Property>& outProps) override;
39
40 virtual void Evaluate(float time, Node* target, TimelineInstance* inst);
41 virtual void Reset(Node* target, TimelineInstance* inst);
42
43 virtual const char* GetTrackTypeName() const { return "Track"; }
44 virtual glm::vec4 GetTrackColor() const;
45 virtual TypeId GetDefaultClipType() const;
46
47 uint64_t GetTargetNodeUuid() const { return mTargetNodeUuid; }
48 void SetTargetNodeUuid(uint64_t uuid) { mTargetNodeUuid = uuid; }
49
50 const std::string& GetTargetNodeName() const { return mTargetNodeName; }
51 void SetTargetNodeName(const std::string& name) { mTargetNodeName = name; }
52
53 uint32_t GetNumClips() const { return (uint32_t)mClips.size(); }
54 TimelineClip* GetClip(uint32_t index) const;
55 void AddClip(TimelineClip* clip);
56 void RemoveClip(uint32_t index);
57 void InsertClip(TimelineClip* clip, uint32_t index);
58 int32_t FindClipIndex(TimelineClip* clip) const;
59
60 bool IsMuted() const { return mMuted; }
61 void SetMuted(bool muted) { mMuted = muted; }
62
63 bool IsLocked() const { return mLocked; }
64 void SetLocked(bool locked) { mLocked = locked; }
65
66protected:
67
68 uint64_t mTargetNodeUuid = 0;
69 std::string mTargetNodeName;
70 std::vector<TimelineClip*> mClips;
71 bool mMuted = false;
72 bool mLocked = false;
73};
uint32_t TypeId
Definition EngineTypes.h:64
Definition Node.h:67
Definition Object.h:13
Definition Stream.h:21
Definition TimelineClip.h:24
Definition TimelineInstance.h:32
Definition TimelineTrack.h:25
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition TimelineTrack.cpp:58
void RemoveClip(uint32_t index)
Definition TimelineTrack.cpp:102
virtual void Reset(Node *target, TimelineInstance *inst)
Definition TimelineTrack.cpp:71
uint64_t mTargetNodeUuid
Definition TimelineTrack.h:68
uint32_t GetNumClips() const
Definition TimelineTrack.h:53
virtual glm::vec4 GetTrackColor() const
Definition TimelineTrack.cpp:75
virtual void SaveStream(Stream &stream)
Definition TimelineTrack.cpp:22
std::vector< TimelineClip * > mClips
Definition TimelineTrack.h:70
int32_t FindClipIndex(TimelineClip *clip) const
Definition TimelineTrack.cpp:126
DECLARE_FACTORY(TimelineTrack, TimelineTrack)
bool IsLocked() const
Definition TimelineTrack.h:63
std::string mTargetNodeName
Definition TimelineTrack.h:69
virtual void LoadStream(Stream &stream, uint32_t version)
Definition TimelineTrack.cpp:37
uint64_t GetTargetNodeUuid() const
Definition TimelineTrack.h:47
bool mMuted
Definition TimelineTrack.h:71
virtual const char * GetTrackTypeName() const
Definition TimelineTrack.h:43
void SetLocked(bool locked)
Definition TimelineTrack.h:64
virtual void Evaluate(float time, Node *target, TimelineInstance *inst)
Definition TimelineTrack.cpp:67
const std::string & GetTargetNodeName() const
Definition TimelineTrack.h:50
void SetTargetNodeName(const std::string &name)
Definition TimelineTrack.h:51
DECLARE_OBJECT(TimelineTrack, Object)
void SetMuted(bool muted)
Definition TimelineTrack.h:61
DECLARE_FACTORY_MANAGER(TimelineTrack)
bool IsMuted() const
Definition TimelineTrack.h:60
void InsertClip(TimelineClip *clip, uint32_t index)
Definition TimelineTrack.cpp:111
bool mLocked
Definition TimelineTrack.h:72
TimelineTrack()
Definition TimelineTrack.cpp:9
virtual TypeId GetDefaultClipType() const
Definition TimelineTrack.cpp:80
void AddClip(TimelineClip *clip)
Definition TimelineTrack.cpp:94
void SetTargetNodeUuid(uint64_t uuid)
Definition TimelineTrack.h:48
virtual ~TimelineTrack()
Definition TimelineTrack.cpp:13
TimelineClip * GetClip(uint32_t index) const
Definition TimelineTrack.cpp:85