Plasma Engine  2.0
Loading...
Searching...
No Matches
CurveFunctions.h
1#pragma once
2
3#include <Foundation/Math/Declarations.h>
4#include <Foundation/Reflection/Reflection.h>
5
15{
16 using StorageType = plUInt8;
17
18 enum Enum
19 {
20 Linear,
21
22 ConstantZero,
23 ConstantOne,
24
25 EaseInSine,
26 EaseOutSine,
27 EaseInOutSine,
28
29 EaseInQuad,
30 EaseOutQuad,
31 EaseInOutQuad,
32
33 EaseInCubic,
34 EaseOutCubic,
35 EaseInOutCubic,
36
37 EaseInQuartic,
38 EaseOutQuartic,
39 EaseInOutQuartic,
40
41 EaseInQuintic,
42 EaseOutQuintic,
43 EaseInOutQuintic,
44
45 EaseInExpo,
46 EaseOutExpo,
47 EaseInOutExpo,
48
49 EaseInCirc,
50 EaseOutCirc,
51 EaseInOutCirc,
52
56
60
61 EaseInBounce,
62 EaseOutBounce,
63 EaseInOutBounce,
64
65 Conical,
66 FadeInHoldFadeOut,
67 FadeInFadeOut,
68 Bell,
69
70 ENUM_COUNT, // All easing function types must be stated before this.
71
72 Default = Linear
73 };
74
76 static double GetValue(Enum function, double x);
77
81 static double GetValue(Enum function, double x, bool bInverse);
82};
83
84PL_DECLARE_REFLECTABLE_TYPE(PL_FOUNDATION_DLL, plCurveFunction);
85
86namespace plMath
87{
88 double GetCurveValue_Linear(double t);
89 double GetCurveValue_ConstantZero(double t);
90 double GetCurveValue_ConstantOne(double t);
91 double GetCurveValue_EaseInSine(double t);
92 double GetCurveValue_EaseOutSine(double t);
93 double GetCurveValue_EaseInOutSine(double t);
94 double GetCurveValue_EaseInQuad(double t);
95 double GetCurveValue_EaseOutQuad(double t);
96 double GetCurveValue_EaseInOutQuad(double t);
97 double GetCurveValue_EaseInCubic(double t);
98 double GetCurveValue_EaseOutCubic(double t);
99 double GetCurveValue_EaseInOutCubic(double t);
100 double GetCurveValue_EaseInQuartic(double t);
101 double GetCurveValue_EaseOutQuartic(double t);
102 double GetCurveValue_EaseInOutQuartic(double t);
103 double GetCurveValue_EaseInQuintic(double t);
104 double GetCurveValue_EaseOutQuintic(double t);
105 double GetCurveValue_EaseInOutQuintic(double t);
106 double GetCurveValue_EaseInExpo(double t);
107 double GetCurveValue_EaseOutExpo(double t);
108 double GetCurveValue_EaseInOutExpo(double t);
109 double GetCurveValue_EaseInCirc(double t);
110 double GetCurveValue_EaseOutCirc(double t);
111 double GetCurveValue_EaseInOutCirc(double t);
112 double GetCurveValue_EaseInBack(double t);
113 double GetCurveValue_EaseOutBack(double t);
114 double GetCurveValue_EaseInOutBack(double t);
115 double GetCurveValue_EaseInElastic(double t);
116 double GetCurveValue_EaseOutElastic(double t);
117 double GetCurveValue_EaseInOutElastic(double t);
118 double GetCurveValue_EaseInBounce(double t);
119 double GetCurveValue_EaseOutBounce(double t);
120 double GetCurveValue_EaseInOutBounce(double t);
121 double GetCurveValue_Conical(double t);
122 double GetCurveValue_FadeInHoldFadeOut(double t);
123 double GetCurveValue_FadeInFadeOut(double t);
124 double GetCurveValue_Bell(double t);
125
126} // namespace plMath
127
128#include <Foundation/Math/Implementation/CurveFunctions_inl.h>
This namespace provides common math-functionality as functions.
Definition Constants.h:6
Available procedural curve generators.
Definition CurveFunctions.h:15
static double GetValue(Enum function, double x)
Helper function that returns the function value at the given x coordinate.
Definition CurveFunctions_inl.h:325
Enum
Definition CurveFunctions.h:19
@ EaseInOutBack
Values exceed the 0-1 range briefly.
Definition CurveFunctions.h:55
@ EaseInElastic
Values exceed the 0-1 range briefly.
Definition CurveFunctions.h:57
@ EaseOutBack
Values exceed the 0-1 range briefly.
Definition CurveFunctions.h:54
@ EaseOutElastic
Values exceed the 0-1 range briefly.
Definition CurveFunctions.h:58
@ EaseInOutElastic
Values exceed the 0-1 range briefly.
Definition CurveFunctions.h:59
@ EaseInBack
Values exceed the 0-1 range briefly.
Definition CurveFunctions.h:53