using System.Collections; using System.Collections.Generic; using UnityEngine; using System; namespace YKMoon.Tween { public abstract class YKTween { public float duration; public TweenEasing easing; public bool ignoreTimeScale = false; private float elapsedTime = 0; public System.Action onFinish; public YKTween(float duration, TweenEasing easing = TweenEasing.Linear, bool ignoreTimeScale = false) { this.duration = duration; this.easing = easing; this.ignoreTimeScale = ignoreTimeScale; elapsedTime = 0; } public void Update(float deltaTime, float unscaledDeltaTime) { elapsedTime += ignoreTimeScale ? unscaledDeltaTime : deltaTime; float percentage = TweenEasingHandler.Apply(easing, elapsedTime, 0.0f, 1.0f, duration); TweenValue(percentage); } public abstract void TweenValue(float percent); public abstract bool IsValid(); public virtual void Finish(bool withCallback) { if(withCallback) { onFinish?.Invoke(); } } public virtual bool IsFinished() { return elapsedTime >= duration; } } }