public void Bake_LinearCurve_IsAccurate(AnimationCurveBake.InterpolationMode mode) { float frameRate = 7; float sampleRate = 30; var sourceCurve = AnimationCurve.Linear(0, 0, 5, 5); var curveKeys = sourceCurve.keys; var destCurve = new AnimationCurve(curveKeys); float start = KeyframeUtilities.StartTime(curveKeys); float end = KeyframeUtilities.EndTime(curveKeys); float duration = end - start; AnimationCurveBake.Bake(destCurve, frameRate, mode); float delta = (end - start) / sampleRate; int numSamples = (int)math.ceil(duration * frameRate) + 1; for (int i = 0; i <= numSamples; i++) { float time = math.clamp(start + i * delta, start, end); float expected = sourceCurve.Evaluate(time); float actual = destCurve.Evaluate(time); } }