private AnimationCurve CreateNewEasingCurve(Ease ease, int timesteps) { if (timesteps <= 0) { return(null); } EaseFunction easeFunction = EaseManager.ToEaseFunction(ease); var curve = new AnimationCurve(); // Adds all the required keys for (int i = 0; i < timesteps; i++) { float time = MathfExtensions.Remap(i, 0, timesteps, 0, Duration); var result = EaseManager.Evaluate(ease, easeFunction, time, Duration, EaseOvershoot, EasePeriod); curve.AddKey(time, result); } #if UNITY_EDITOR // Set the tangent mode to Clamped Auto for all keys for (int i = 0; i < curve.length; i++) { var tangentMode = AnimationUtility.TangentMode.Linear; AnimationUtility.SetKeyLeftTangentMode(curve, i, tangentMode); AnimationUtility.SetKeyRightTangentMode(curve, i, tangentMode); } #endif return(curve); }