private static IEnumerator LerpFloatRoutine(FloatLerpContainer data, Action <float> callback, Action endCallback = null)
    {
        float elapsed = 0;

        while (elapsed < data.Duration)
        {
            data.StartValue = Mathf.Lerp(data.StartValue, data.TargetValue, elapsed / data.Duration);

            callback.Invoke(data.StartValue);

            elapsed += Time.deltaTime;
            yield return(null);
        }

        data.StartValue = data.TargetValue;
        callback.Invoke(data.StartValue);
        endCallback?.Invoke();
    }
 public static Coroutine LerpFloat(FloatLerpContainer data, Action <float> callback, Action endCallback = null)
 {
     CheckForObject();
     return(_routinesObject.StartCoroutine(LerpFloatRoutine(data, callback, endCallback)));
 }