private static IEnumerator PlayAnimationCoroutine(Action <float> animationAction, float duration, AnimationF.GeneralEaseFunc easeFunc) { float startTime = Time.time; for (var t = 0f; t < 1f; t = (Time.time - startTime) / duration) { animationAction.Invoke(easeFunc(t)); yield return(null); } animationAction.Invoke(easeFunc(1f)); yield return(null); }
/// <summary> /// Plays animation in a coroutine giving animationAction params from 0 to 1 with specific ease func /// </summary> /// <param name="monoBehaviour">method will be invoked on this</param> /// <param name="animationAction">action to be done each frame</param> /// <param name="duration">duration of action</param> /// <param name="easeCurve">ease function</param> public static Coroutine PlayAnimation(this MonoBehaviour monoBehaviour, Action <float> animationAction, float duration, AnimationF.GeneralEaseFunc easeCurve) { return(monoBehaviour.StartCoroutine(PlayAnimationCoroutine(animationAction, duration, easeCurve))); }