mirror of
https://github.com/Cardidi/dotween-upm-fork.git
synced 2025-12-20 17:26:03 +08:00
Adding period to Flash eases
This commit is contained in:
parent
b58e6d062a
commit
9732b490aa
@ -61,7 +61,8 @@ namespace DG.Tweening.Core.Easing
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static float Evaluate(Ease easeType, EaseFunction customEase, float time, float duration, float overshootOrAmplitude, float period)
|
public static float Evaluate(Ease easeType, EaseFunction customEase, float time, float duration, float overshootOrAmplitude, float period)
|
||||||
{
|
{
|
||||||
float durationStep;
|
int stepIndex;
|
||||||
|
float stepDuration;
|
||||||
int dir;
|
int dir;
|
||||||
|
|
||||||
switch (easeType) {
|
switch (easeType) {
|
||||||
@ -170,44 +171,78 @@ namespace DG.Tweening.Core.Easing
|
|||||||
|
|
||||||
// Extra custom eases ////////////////////////////////////////////////////
|
// Extra custom eases ////////////////////////////////////////////////////
|
||||||
case Ease.Flash:
|
case Ease.Flash:
|
||||||
durationStep = duration / overshootOrAmplitude;
|
// stepIndex = Mathf.CeilToInt((time / duration) * overshootOrAmplitude); // 1 to overshootOrAmplitude
|
||||||
dir = 1;
|
// stepDuration = duration / overshootOrAmplitude;
|
||||||
while (time > durationStep) {
|
// time -= stepDuration * (stepIndex - 1);
|
||||||
time -= durationStep;
|
// dir = (stepIndex % 2 != 0) ? 1 : - 1;
|
||||||
dir = -dir;
|
// if (dir < 0) time -= stepDuration;
|
||||||
|
// float res = (time * dir) / stepDuration;
|
||||||
|
// if (period > 0) {
|
||||||
|
// float easedRes = (res * (overshootOrAmplitude - stepIndex)) / overshootOrAmplitude;
|
||||||
|
// float diff = easedRes - res;
|
||||||
|
// diff = diff * period;
|
||||||
|
// return res + diff;
|
||||||
|
// }
|
||||||
|
// if (period < 0) {
|
||||||
|
// period = -period;
|
||||||
|
// float easedRes = (res * stepIndex) / overshootOrAmplitude;
|
||||||
|
// float diff = easedRes - res;
|
||||||
|
// diff = diff * period;
|
||||||
|
// return res + diff;
|
||||||
|
// }
|
||||||
|
// return res;
|
||||||
|
|
||||||
|
float final = 0;
|
||||||
|
stepIndex = Mathf.CeilToInt((time / duration) * overshootOrAmplitude); // 1 to overshootOrAmplitude
|
||||||
|
stepDuration = duration / overshootOrAmplitude;
|
||||||
|
time -= stepDuration * (stepIndex - 1);
|
||||||
|
dir = (stepIndex % 2 != 0) ? 1 : - 1;
|
||||||
|
if (dir < 0) time -= stepDuration;
|
||||||
|
float res = (time * dir) / stepDuration;
|
||||||
|
float easedRes = 0;
|
||||||
|
if (period > 0) {
|
||||||
|
final = overshootOrAmplitude - (float)Math.Truncate(overshootOrAmplitude);
|
||||||
|
if ((float)Math.Truncate(overshootOrAmplitude) % 2 > 0) final = 1 - final;
|
||||||
|
final = (final * stepIndex) / overshootOrAmplitude;
|
||||||
|
easedRes = (res * (overshootOrAmplitude - stepIndex)) / overshootOrAmplitude;
|
||||||
|
} else if (period < 0) {
|
||||||
|
period = -period;
|
||||||
|
easedRes = (res * stepIndex) / overshootOrAmplitude;
|
||||||
}
|
}
|
||||||
if (dir < 0) time -= durationStep;
|
float diff = easedRes - res;
|
||||||
return (time * dir) / durationStep;
|
res += (diff * period) + final;
|
||||||
|
if (res > 1) res = 1;
|
||||||
|
return res;
|
||||||
case Ease.InFlash:
|
case Ease.InFlash:
|
||||||
durationStep = duration / overshootOrAmplitude;
|
stepDuration = duration / overshootOrAmplitude;
|
||||||
dir = 1;
|
dir = 1;
|
||||||
while (time > durationStep) {
|
while (time > stepDuration) {
|
||||||
time -= durationStep;
|
time -= stepDuration;
|
||||||
dir = -dir;
|
dir = -dir;
|
||||||
}
|
}
|
||||||
if (dir < 0) time -= durationStep;
|
if (dir < 0) time -= stepDuration;
|
||||||
time = time * dir;
|
time = time * dir;
|
||||||
return (time /= durationStep) * time;
|
return (time /= stepDuration) * time;
|
||||||
case Ease.OutFlash:
|
case Ease.OutFlash:
|
||||||
durationStep = duration / overshootOrAmplitude;
|
stepDuration = duration / overshootOrAmplitude;
|
||||||
dir = 1;
|
dir = 1;
|
||||||
while (time > durationStep) {
|
while (time > stepDuration) {
|
||||||
time -= durationStep;
|
time -= stepDuration;
|
||||||
dir = -dir;
|
dir = -dir;
|
||||||
}
|
}
|
||||||
if (dir < 0) time -= durationStep;
|
if (dir < 0) time -= stepDuration;
|
||||||
time = time * dir;
|
time = time * dir;
|
||||||
return -(time /= durationStep) * (time - 2);
|
return -(time /= stepDuration) * (time - 2);
|
||||||
case Ease.InOutFlash:
|
case Ease.InOutFlash:
|
||||||
durationStep = duration / overshootOrAmplitude;
|
stepDuration = duration / overshootOrAmplitude;
|
||||||
dir = 1;
|
dir = 1;
|
||||||
while (time > durationStep) {
|
while (time > stepDuration) {
|
||||||
time -= durationStep;
|
time -= stepDuration;
|
||||||
dir = -dir;
|
dir = -dir;
|
||||||
}
|
}
|
||||||
if (dir < 0) time -= durationStep;
|
if (dir < 0) time -= stepDuration;
|
||||||
time = time * dir;
|
time = time * dir;
|
||||||
if ((time /= durationStep * 0.5f) < 1) return 0.5f * time * time;
|
if ((time /= stepDuration * 0.5f) < 1) return 0.5f * time * time;
|
||||||
return -0.5f * ((--time) * (time - 2) - 1);
|
return -0.5f * ((--time) * (time - 2) - 1);
|
||||||
|
|
||||||
// Default
|
// Default
|
||||||
|
|||||||
@ -32,7 +32,7 @@ namespace DG.Tweening
|
|||||||
public class DOTween
|
public class DOTween
|
||||||
{
|
{
|
||||||
/// <summary>DOTween's version</summary>
|
/// <summary>DOTween's version</summary>
|
||||||
public static readonly string Version = "1.1.050";
|
public static readonly string Version = "1.1.060";
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
// Options ////////////////////////////////////
|
// Options ////////////////////////////////////
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user