Initial Commit
This commit is contained in:
commit
ee5c2f922d
2255 changed files with 547750 additions and 0 deletions
511
Assets/Scripts/Tween/TweenEase.cs
Normal file
511
Assets/Scripts/Tween/TweenEase.cs
Normal file
|
|
@ -0,0 +1,511 @@
|
|||
using Tween;
|
||||
using UnityEngine;
|
||||
|
||||
public static class TweenEase
|
||||
{
|
||||
public static float EaseInQuad(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * value * value + start;
|
||||
}
|
||||
|
||||
public static float EaseOutQuad(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return -end * value * (value - 2) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutQuad(float start, float end, float value)
|
||||
{
|
||||
value /= .5f;
|
||||
end -= start;
|
||||
if (value < 1)
|
||||
{
|
||||
return end * 0.5f * value * value + start;
|
||||
}
|
||||
value--;
|
||||
return -end * 0.5f * (value * (value - 2) - 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInCubic(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * value * value * value + start;
|
||||
}
|
||||
|
||||
public static float EaseOutCubic(float start, float end, float value)
|
||||
{
|
||||
value--;
|
||||
end -= start;
|
||||
return end * (value * value * value + 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutCubic(float start, float end, float value)
|
||||
{
|
||||
value /= .5f;
|
||||
end -= start;
|
||||
if (value < 1)
|
||||
{
|
||||
return end * 0.5f * value * value * value + start;
|
||||
}
|
||||
value -= 2;
|
||||
return end * 0.5f * (value * value * value + 2) + start;
|
||||
}
|
||||
|
||||
public static float EaseInQuart(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * value * value * value * value + start;
|
||||
}
|
||||
|
||||
public static float EaseOutQuart(float start, float end, float value)
|
||||
{
|
||||
value--;
|
||||
end -= start;
|
||||
return -end * (value * value * value * value - 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutQuart(float start, float end, float value)
|
||||
{
|
||||
value /= .5f;
|
||||
end -= start;
|
||||
if (value < 1)
|
||||
{
|
||||
return end * 0.5f * value * value * value * value + start;
|
||||
}
|
||||
value -= 2;
|
||||
return -end * 0.5f * (value * value * value * value - 2) + start;
|
||||
}
|
||||
|
||||
public static float EaseInQuint(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * value * value * value * value * value + start;
|
||||
}
|
||||
|
||||
public static float EaseOutQuint(float start, float end, float value)
|
||||
{
|
||||
value--;
|
||||
end -= start;
|
||||
return end * (value * value * value * value * value + 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutQuint(float start, float end, float value)
|
||||
{
|
||||
value /= .5f;
|
||||
end -= start;
|
||||
if (value < 1)
|
||||
{
|
||||
return end * 0.5f * value * value * value * value * value + start;
|
||||
}
|
||||
value -= 2;
|
||||
return end * 0.5f * (value * value * value * value * value + 2) + start;
|
||||
}
|
||||
|
||||
public static float EaseInSine(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return -end * Mathf.Cos(value * (Mathf.PI * 0.5f)) + end + start;
|
||||
}
|
||||
|
||||
public static float EaseOutSine(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * Mathf.Sin(value * (Mathf.PI * 0.5f)) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutSine(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return -end * 0.5f * (Mathf.Cos(Mathf.PI * value) - 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInExpo(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * Mathf.Pow(2, 10 * (value - 1)) + start;
|
||||
}
|
||||
|
||||
public static float EaseOutExpo(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return end * (-Mathf.Pow(2, -10 * value) + 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutExpo(float start, float end, float value)
|
||||
{
|
||||
value /= .5f;
|
||||
end -= start;
|
||||
if (value < 1)
|
||||
{
|
||||
return end * 0.5f * Mathf.Pow(2, 10 * (value - 1)) + start;
|
||||
}
|
||||
value--;
|
||||
return end * 0.5f * (-Mathf.Pow(2, -10 * value) + 2) + start;
|
||||
}
|
||||
|
||||
public static float EaseInCirc(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
return -end * (Mathf.Sqrt(1 - value * value) - 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseOutCirc(float start, float end, float value)
|
||||
{
|
||||
value--;
|
||||
end -= start;
|
||||
return end * Mathf.Sqrt(1 - value * value) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutCirc(float start, float end, float value)
|
||||
{
|
||||
value /= .5f;
|
||||
end -= start;
|
||||
if (value < 1)
|
||||
{
|
||||
return -end * 0.5f * (Mathf.Sqrt(1 - value * value) - 1) + start;
|
||||
}
|
||||
value -= 2;
|
||||
return end * 0.5f * (Mathf.Sqrt(1 - value * value) + 1) + start;
|
||||
}
|
||||
|
||||
/* GFX47 MOD START */
|
||||
public static float EaseInBounce(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
var d = 1f;
|
||||
return end - EaseOutBounce(0, end, d - value) + start;
|
||||
}
|
||||
/* GFX47 MOD END */
|
||||
|
||||
/* GFX47 MOD START */
|
||||
//private float bounce(float start, float end, float value){
|
||||
public static float EaseOutBounce(float start, float end, float value)
|
||||
{
|
||||
value /= 1f;
|
||||
end -= start;
|
||||
if (value < 1 / 2.75f)
|
||||
{
|
||||
return end * (7.5625f * value * value) + start;
|
||||
}
|
||||
|
||||
if (value < 2 / 2.75f)
|
||||
{
|
||||
value -= 1.5f / 2.75f;
|
||||
return end * (7.5625f * value * value + .75f) + start;
|
||||
}
|
||||
|
||||
if (value < 2.5 / 2.75)
|
||||
{
|
||||
value -= 2.25f / 2.75f;
|
||||
return end * (7.5625f * value * value + .9375f) + start;
|
||||
}
|
||||
|
||||
value -= 2.625f / 2.75f;
|
||||
return end * (7.5625f * value * value + .984375f) + start;
|
||||
}
|
||||
/* GFX47 MOD END */
|
||||
|
||||
/* GFX47 MOD START */
|
||||
public static float EaseInOutBounce(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
var d = 1f;
|
||||
if (value < d * 0.5f)
|
||||
{
|
||||
return EaseInBounce(0, end, value * 2) * 0.5f + start;
|
||||
}
|
||||
return EaseOutBounce(0, end, value * 2 - d) * 0.5f + end * 0.5f + start;
|
||||
}
|
||||
/* GFX47 MOD END */
|
||||
|
||||
public static float EaseInBack(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
value /= 1;
|
||||
var s = 1.70158f;
|
||||
return end * value * value * ((s + 1) * value - s) + start;
|
||||
}
|
||||
|
||||
public static float EaseOutBack(float start, float end, float value)
|
||||
{
|
||||
var s = 1.70158f;
|
||||
end -= start;
|
||||
value = value - 1;
|
||||
return end * (value * value * ((s + 1) * value + s) + 1) + start;
|
||||
}
|
||||
|
||||
public static float EaseInOutBack(float start, float end, float value)
|
||||
{
|
||||
var s = 1.70158f;
|
||||
end -= start;
|
||||
value /= .5f;
|
||||
if (value < 1)
|
||||
{
|
||||
s *= 1.525f;
|
||||
return end * 0.5f * (value * value * ((s + 1) * value - s)) + start;
|
||||
}
|
||||
|
||||
value -= 2;
|
||||
s *= 1.525f;
|
||||
return end * 0.5f * (value * value * ((s + 1) * value + s) + 2) + start;
|
||||
}
|
||||
|
||||
public static float Punch(float amplitude, float value)
|
||||
{
|
||||
float s = 9;
|
||||
if (value == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (value == 1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
var period = 1 * 0.3f;
|
||||
s = period / (2 * Mathf.PI) * Mathf.Asin(0);
|
||||
return amplitude * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * 1 - s) * (2 * Mathf.PI) / period);
|
||||
}
|
||||
|
||||
/* GFX47 MOD START */
|
||||
public static float EaseInElastic(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
|
||||
var d = 1f;
|
||||
var p = d * .3f;
|
||||
float s = 0;
|
||||
float a = 0;
|
||||
|
||||
if (value == 0)
|
||||
{
|
||||
return start;
|
||||
}
|
||||
|
||||
if ((value /= d) == 1)
|
||||
{
|
||||
return start + end;
|
||||
}
|
||||
|
||||
if (a == 0f || a < Mathf.Abs(end))
|
||||
{
|
||||
a = end;
|
||||
s = p / 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
|
||||
}
|
||||
|
||||
return -(a * Mathf.Pow(2, 10 * (value -= 1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start;
|
||||
}
|
||||
/* GFX47 MOD END */
|
||||
|
||||
/* GFX47 MOD START */
|
||||
//private float elastic(float start, float end, float value){
|
||||
public static float EaseOutElastic(float start, float end, float value)
|
||||
{
|
||||
/* GFX47 MOD END */
|
||||
//Thank you to rafael.marteleto for fixing this as a port over from Pedro's UnityTween
|
||||
end -= start;
|
||||
|
||||
var d = 1f;
|
||||
var p = d * .3f;
|
||||
float s = 0;
|
||||
float a = 0;
|
||||
|
||||
if (value == 0)
|
||||
{
|
||||
return start;
|
||||
}
|
||||
|
||||
if ((value /= d) == 1)
|
||||
{
|
||||
return start + end;
|
||||
}
|
||||
|
||||
if (a == 0f || a < Mathf.Abs(end))
|
||||
{
|
||||
a = end;
|
||||
s = p * 0.25f;
|
||||
}
|
||||
else
|
||||
{
|
||||
s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
|
||||
}
|
||||
|
||||
return a * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) + end + start;
|
||||
}
|
||||
|
||||
/* GFX47 MOD START */
|
||||
public static float EaseInOutElastic(float start, float end, float value)
|
||||
{
|
||||
end -= start;
|
||||
|
||||
var d = 1f;
|
||||
var p = d * .3f;
|
||||
float s = 0;
|
||||
float a = 0;
|
||||
|
||||
if (value == 0)
|
||||
{
|
||||
return start;
|
||||
}
|
||||
|
||||
if ((value /= d * 0.5f) == 2)
|
||||
{
|
||||
return start + end;
|
||||
}
|
||||
|
||||
if (a == 0f || a < Mathf.Abs(end))
|
||||
{
|
||||
a = end;
|
||||
s = p / 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
|
||||
}
|
||||
|
||||
if (value < 1)
|
||||
{
|
||||
return -0.5f * (a * Mathf.Pow(2, 10 * (value -= 1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start;
|
||||
}
|
||||
return a * Mathf.Pow(2, -10 * (value -= 1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) * 0.5f + end + start;
|
||||
}
|
||||
|
||||
public static float Linear(float start, float end, float value)
|
||||
{
|
||||
return Mathf.Lerp(start, end, value);
|
||||
}
|
||||
|
||||
public static float Spring(float start, float end, float value)
|
||||
{
|
||||
value = Mathf.Clamp01(value);
|
||||
value = (Mathf.Sin(value * Mathf.PI * (0.2f + 2.5f * value * value * value)) * Mathf.Pow(1f - value, 2.2f) + value) *
|
||||
(1f + 1.2f * (1f - value));
|
||||
return start + (end - start) * value;
|
||||
}
|
||||
|
||||
public static float Ease(this EaseType easeType, float value)
|
||||
{
|
||||
return Ease(easeType, 0, 1, value);
|
||||
}
|
||||
|
||||
public static float Ease(this EaseType easeType, float start, float end, float value)
|
||||
{
|
||||
switch (easeType)
|
||||
{
|
||||
case EaseType.easeInQuad:
|
||||
return EaseInQuad(start, end, value);
|
||||
|
||||
case EaseType.easeOutQuad:
|
||||
return EaseOutQuad(start, end, value);
|
||||
|
||||
case EaseType.easeInOutQuad:
|
||||
return EaseInOutQuad(start, end, value);
|
||||
|
||||
case EaseType.easeInCubic:
|
||||
return EaseInCubic(start, end, value);
|
||||
|
||||
case EaseType.easeOutCubic:
|
||||
return EaseOutCubic(start, end, value);
|
||||
|
||||
case EaseType.easeInOutCubic:
|
||||
return EaseInOutCubic(start, end, value);
|
||||
|
||||
case EaseType.easeInQuart:
|
||||
return EaseInQuart(start, end, value);
|
||||
|
||||
case EaseType.easeOutQuart:
|
||||
return EaseOutQuart(start, end, value);
|
||||
|
||||
case EaseType.easeInOutQuart:
|
||||
return EaseInOutQuart(start, end, value);
|
||||
|
||||
case EaseType.easeInQuint:
|
||||
return EaseInQuint(start, end, value);
|
||||
|
||||
case EaseType.easeOutQuint:
|
||||
return EaseOutQuint(start, end, value);
|
||||
|
||||
case EaseType.easeInOutQuint:
|
||||
return EaseInOutQuint(start, end, value);
|
||||
|
||||
case EaseType.easeInSine:
|
||||
return EaseInSine(start, end, value);
|
||||
|
||||
case EaseType.easeOutSine:
|
||||
return EaseOutSine(start, end, value);
|
||||
|
||||
case EaseType.easeInOutSine:
|
||||
return EaseInOutSine(start, end, value);
|
||||
|
||||
case EaseType.easeInExpo:
|
||||
return EaseInExpo(start, end, value);
|
||||
|
||||
case EaseType.easeOutExpo:
|
||||
return EaseOutExpo(start, end, value);
|
||||
|
||||
case EaseType.easeInOutExpo:
|
||||
return EaseInOutExpo(start, end, value);
|
||||
|
||||
case EaseType.easeInCirc:
|
||||
return EaseInCirc(start, end, value);
|
||||
|
||||
case EaseType.easeOutCirc:
|
||||
return EaseOutCirc(start, end, value);
|
||||
|
||||
case EaseType.easeInOutCirc:
|
||||
return EaseInOutCirc(start, end, value);
|
||||
|
||||
case EaseType.linear:
|
||||
return Linear(start, end, value);
|
||||
|
||||
case EaseType.spring:
|
||||
return Spring(start, end, value);
|
||||
|
||||
/* GFX47 MOD START */
|
||||
/*case EaseType.bounce:
|
||||
return new EasingFunction(bounce);
|
||||
*/
|
||||
case EaseType.easeInBounce:
|
||||
return EaseInBounce(start, end, value);
|
||||
|
||||
case EaseType.easeOutBounce:
|
||||
return EaseOutBounce(start, end, value);
|
||||
|
||||
case EaseType.easeInOutBounce:
|
||||
return EaseInOutBounce(start, end, value);
|
||||
|
||||
/* GFX47 MOD END */
|
||||
case EaseType.easeInBack:
|
||||
return EaseInBack(start, end, value);
|
||||
|
||||
case EaseType.easeOutBack:
|
||||
return EaseOutBack(start, end, value);
|
||||
|
||||
case EaseType.easeInOutBack:
|
||||
return EaseInOutBack(start, end, value);
|
||||
|
||||
/* GFX47 MOD START */
|
||||
/*case EaseType.elastic:
|
||||
return new EasingFunction(elastic);
|
||||
*/
|
||||
case EaseType.easeInElastic:
|
||||
return EaseInElastic(start, end, value);
|
||||
|
||||
case EaseType.easeOutElastic:
|
||||
return EaseOutElastic(start, end, value);
|
||||
|
||||
case EaseType.easeInOutElastic:
|
||||
return EaseInOutElastic(start, end, value);
|
||||
|
||||
/* GFX47 MOD END */
|
||||
default:
|
||||
return Linear(start, end, value);
|
||||
}
|
||||
}
|
||||
|
||||
/* GFX47 MOD END */
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue