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