Polyphase Game Engine
Loading...
Searching...
No Matches
TimelineTypes.h
Go to the documentation of this file.
1#pragma once
2
3#include "Maths.h"
4
5#include <cstdint>
6#include <string>
7
8enum class InterpMode : uint8_t
9{
10 Linear,
11 Step,
12 Cubic,
13
14 Count
15};
16
18{
19 float mTime = 0.0f;
20 glm::vec3 mPosition = glm::vec3(0.0f);
21 glm::quat mRotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
22 glm::vec3 mScale = glm::vec3(1.0f);
24 std::string mSignal;
25
26 static TransformKeyframe Lerp(const TransformKeyframe& a, const TransformKeyframe& b, float t)
27 {
28 if (a.mInterpMode == InterpMode::Step || t <= 0.0f)
29 {
30 return a;
31 }
32
33 if (t >= 1.0f)
34 {
35 return b;
36 }
37
39 out.mTime = glm::mix(a.mTime, b.mTime, t);
40 out.mPosition = glm::mix(a.mPosition, b.mPosition, t);
41 out.mRotation = glm::slerp(a.mRotation, b.mRotation, t);
42 out.mScale = glm::mix(a.mScale, b.mScale, t);
44 out.mSignal = a.mSignal;
45 return out;
46 }
47};
48
49class Node;
InterpMode
Definition TimelineTypes.h:9
void ApplyTransformKeyframeToNode(Node *target, const TransformKeyframe &kf)
Definition TimelineTypes.cpp:7
Definition Node.h:67
Definition TimelineTypes.h:18
float mTime
Definition TimelineTypes.h:19
InterpMode mInterpMode
Definition TimelineTypes.h:23
static TransformKeyframe Lerp(const TransformKeyframe &a, const TransformKeyframe &b, float t)
Definition TimelineTypes.h:26
glm::vec3 mScale
Definition TimelineTypes.h:22
glm::quat mRotation
Definition TimelineTypes.h:21
std::string mSignal
Definition TimelineTypes.h:24
glm::vec3 mPosition
Definition TimelineTypes.h:20