| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 | // NOTE: methods on the EaseF convenience class#include "math/mMath.h"#include "math/mEase.h"#include "core/strings/stringFunctions.h"EaseF::EaseF(){	mDir = 0;	mType = 0;	mParam[0] = mParam[1] = -1.0f;}EaseF::EaseF(const EaseF &ease){	this->mDir = ease.mDir;	this->mType = ease.mType;	this->mParam[0] = ease.mParam[0];	this->mParam[1] = ease.mParam[1];}EaseF::EaseF(const S32 dir, const S32 type){	this->mDir = dir;	this->mType = type;	this->mParam[0] = this->mParam[1] = -1.0f;}EaseF::EaseF(const S32 dir, const S32 type, F32 param[2]){	this->mDir = dir;	this->mType = type;	this->mParam[0] = param[0];	this->mParam[1] = param[1];}void EaseF::set(const S32 dir, const S32 type){	this->mDir = dir;	this->mType = type;	this->mParam[0] = this->mParam[1] = -1.0f;}void EaseF::set(const S32 dir, const S32 type, F32 param[2]){	this->mDir = dir;	this->mType = type;	this->mParam[0] = param[0];	this->mParam[1] = param[1];}void EaseF::set(const S32 dir, const S32 type, F32 param0, F32 param1){	this->mDir = dir;	this->mType = type;	this->mParam[0] = param0;	this->mParam[1] = param1;}void EaseF::set(const char *s){   dSscanf(s,"%d %d %f %f",&mDir,&mType,&mParam[0],&mParam[1]);}F32 EaseF::getValue(F32 t, F32 b, F32 c, F32 d) const{	F32 value = 0;	if (mType == Ease::Linear)	{	   		value = mLinearTween(t,b, c, d);	}	else if (mType == Ease::Quadratic)	{		if (mDir == Ease::In)		   value = mEaseInQuad(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutQuad(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutQuad(t,b, c, d);	}	else if (mType == Ease::Cubic)	{		if (mDir == Ease::In)		   value = mEaseInCubic(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutCubic(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutCubic(t,b, c, d);	}	else if (mType == Ease::Quartic)	{		if (mDir == Ease::In)		   value = mEaseInQuart(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutQuart(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutQuart(t,b, c, d);	}	else if (mType == Ease::Quintic)	{		if (mDir == Ease::In)		   value = mEaseInQuint(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutQuint(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutQuint(t,b, c, d);	}	else if (mType == Ease::Sinusoidal)	{		if (mDir == Ease::In)		   value = mEaseInSine(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutSine(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutSine(t,b, c, d);	}	else if (mType == Ease::Exponential)	{		if (mDir == Ease::In)		   value = mEaseInExpo(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutExpo(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutExpo(t,b, c, d);	}	else if (mType == Ease::Circular)	{		if (mDir == Ease::In)		   value = mEaseInCirc(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutCirc(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutCirc(t,b, c, d);	}	else if (mType == Ease::Elastic)	{		if (mDir == Ease::In)		   value = mEaseInElastic(t,b, c, d, mParam[0], mParam[1]);		else if (mDir == Ease::Out)		   value = mEaseOutElastic(t,b, c, d, mParam[0], mParam[1]);		else if (mDir == Ease::InOut)		   value = mEaseInOutElastic(t,b, c, d, mParam[0], mParam[1]);	}	else if (mType == Ease::Back)	{		if (mDir == Ease::In)		   value = mEaseInBack(t,b, c, d, mParam[0]);		else if (mDir == Ease::Out)		   value = mEaseOutBack(t,b, c, d, mParam[0]);		else if (mDir == Ease::InOut)		   value = mEaseInOutBack(t,b, c, d, mParam[0]);	}	else if (mType == Ease::Bounce)	{		if (mDir == Ease::In)		   value = mEaseInBounce(t,b, c, d);		else if (mDir == Ease::Out)		   value = mEaseOutBounce(t,b, c, d);		else if (mDir == Ease::InOut)		   value = mEaseInOutBounce(t,b, c, d);	}	else	{		// what ?	}	return value;}// < pg
 |