﻿public static class GoEaseBounce
{
	public static float EaseOut( float t, float b, float c, float d )
	{
		if( ( t /= d ) < ( 1 / 2.75 ) )
		{
			return c * ( 7.5625f * t * t ) + b;
		}
		else if( t < ( 2 / 2.75 ) )
		{
			return c * ( 7.5625f * ( t -= ( 1.5f / 2.75f ) ) * t + .75f ) + b;
		}
		else if( t < ( 2.5 / 2.75 ) )
		{
			return c * ( 7.5625f * ( t -= ( 2.25f / 2.75f ) ) * t + .9375f ) + b;
		}
		else
		{
			return c * ( 7.5625f * ( t -= ( 2.625f / 2.75f ) ) * t + .984375f ) + b;
		}
	}

	public static float EaseIn( float t, float b, float c, float d )
	{
		return c - EaseOut( d - t, 0, c, d ) + b;
	}

	public static float EaseInOut( float t, float b, float c, float d )
	{
		if( t < d / 2 )
			return EaseIn( t * 2, 0, c, d ) * 0.5f + b;
		else
			return EaseOut( t * 2 - d, 0, c, d ) * .5f + c * 0.5f + b;
	}
}