mEase.cpp
Engine/source/math/mEase.cpp
More...
Detailed Description
1
2// NOTE: methods on the EaseF convenience class
3
4#include "math/mMath.h"
5#include "math/mEase.h"
6#include "core/strings/stringFunctions.h"
7
8EaseF::EaseF()
9{
10 mDir = 0;
11 mType = 0;
12 mParam[0] = mParam[1] = -1.0f;
13}
14
15EaseF::EaseF(const EaseF &ease)
16{
17 this->mDir = ease.mDir;
18 this->mType = ease.mType;
19 this->mParam[0] = ease.mParam[0];
20 this->mParam[1] = ease.mParam[1];
21}
22
23EaseF::EaseF(const S32 dir, const S32 type)
24{
25 this->mDir = dir;
26 this->mType = type;
27 this->mParam[0] = this->mParam[1] = -1.0f;
28}
29
30EaseF::EaseF(const S32 dir, const S32 type, F32 param[2])
31{
32 this->mDir = dir;
33 this->mType = type;
34 this->mParam[0] = param[0];
35 this->mParam[1] = param[1];
36}
37
38void EaseF::set(const S32 dir, const S32 type)
39{
40 this->mDir = dir;
41 this->mType = type;
42 this->mParam[0] = this->mParam[1] = -1.0f;
43}
44
45void EaseF::set(const S32 dir, const S32 type, F32 param[2])
46{
47 this->mDir = dir;
48 this->mType = type;
49 this->mParam[0] = param[0];
50 this->mParam[1] = param[1];
51}
52
53void EaseF::set(const S32 dir, const S32 type, F32 param0, F32 param1)
54{
55 this->mDir = dir;
56 this->mType = type;
57 this->mParam[0] = param0;
58 this->mParam[1] = param1;
59}
60
61void EaseF::set(const char *s)
62{
63 dSscanf(s,"%d %d %f %f",&mDir,&mType,&mParam[0],&mParam[1]);
64}
65
66F32 EaseF::getValue(F32 t, F32 b, F32 c, F32 d) const
67{
68 F32 value = 0;
69
70 if (mType == Ease::Linear)
71 {
72 value = mLinearTween(t,b, c, d);
73 }
74 else if (mType == Ease::Quadratic)
75 {
76 if (mDir == Ease::In)
77 value = mEaseInQuad(t,b, c, d);
78 else if (mDir == Ease::Out)
79 value = mEaseOutQuad(t,b, c, d);
80 else if (mDir == Ease::InOut)
81 value = mEaseInOutQuad(t,b, c, d);
82 }
83 else if (mType == Ease::Cubic)
84 {
85 if (mDir == Ease::In)
86 value = mEaseInCubic(t,b, c, d);
87 else if (mDir == Ease::Out)
88 value = mEaseOutCubic(t,b, c, d);
89 else if (mDir == Ease::InOut)
90 value = mEaseInOutCubic(t,b, c, d);
91 }
92 else if (mType == Ease::Quartic)
93 {
94 if (mDir == Ease::In)
95 value = mEaseInQuart(t,b, c, d);
96 else if (mDir == Ease::Out)
97 value = mEaseOutQuart(t,b, c, d);
98 else if (mDir == Ease::InOut)
99 value = mEaseInOutQuart(t,b, c, d);
100 }
101 else if (mType == Ease::Quintic)
102 {
103 if (mDir == Ease::In)
104 value = mEaseInQuint(t,b, c, d);
105 else if (mDir == Ease::Out)
106 value = mEaseOutQuint(t,b, c, d);
107 else if (mDir == Ease::InOut)
108 value = mEaseInOutQuint(t,b, c, d);
109 }
110 else if (mType == Ease::Sinusoidal)
111 {
112 if (mDir == Ease::In)
113 value = mEaseInSine(t,b, c, d);
114 else if (mDir == Ease::Out)
115 value = mEaseOutSine(t,b, c, d);
116 else if (mDir == Ease::InOut)
117 value = mEaseInOutSine(t,b, c, d);
118 }
119 else if (mType == Ease::Exponential)
120 {
121 if (mDir == Ease::In)
122 value = mEaseInExpo(t,b, c, d);
123 else if (mDir == Ease::Out)
124 value = mEaseOutExpo(t,b, c, d);
125 else if (mDir == Ease::InOut)
126 value = mEaseInOutExpo(t,b, c, d);
127 }
128 else if (mType == Ease::Circular)
129 {
130 if (mDir == Ease::In)
131 value = mEaseInCirc(t,b, c, d);
132 else if (mDir == Ease::Out)
133 value = mEaseOutCirc(t,b, c, d);
134 else if (mDir == Ease::InOut)
135 value = mEaseInOutCirc(t,b, c, d);
136 }
137 else if (mType == Ease::Elastic)
138 {
139 if (mDir == Ease::In)
140 value = mEaseInElastic(t,b, c, d, mParam[0], mParam[1]);
141 else if (mDir == Ease::Out)
142 value = mEaseOutElastic(t,b, c, d, mParam[0], mParam[1]);
143 else if (mDir == Ease::InOut)
144 value = mEaseInOutElastic(t,b, c, d, mParam[0], mParam[1]);
145 }
146 else if (mType == Ease::Back)
147 {
148 if (mDir == Ease::In)
149 value = mEaseInBack(t,b, c, d, mParam[0]);
150 else if (mDir == Ease::Out)
151 value = mEaseOutBack(t,b, c, d, mParam[0]);
152 else if (mDir == Ease::InOut)
153 value = mEaseInOutBack(t,b, c, d, mParam[0]);
154 }
155 else if (mType == Ease::Bounce)
156 {
157 if (mDir == Ease::In)
158 value = mEaseInBounce(t,b, c, d);
159 else if (mDir == Ease::Out)
160 value = mEaseOutBounce(t,b, c, d);
161 else if (mDir == Ease::InOut)
162 value = mEaseInOutBounce(t,b, c, d);
163 }
164 else
165 {
166 // what ?
167 }
168
169 return value;
170}
171
172// < pg
173