public static void SetLinear(ref AnimationCurve curve) {
for (int i = 0; i < curve.length; i++) {
Keyframe boxed = curve.keys[i]; // getting around the fact that Keyframe is a struct by pre-boxing
boxed.tangentMode = GetNewTangentKeyMode(boxed.tangentMode, TangentDirection.Left, TangentMode.Linear);
boxed.tangentMode = GetNewTangentKeyMode(boxed.tangentMode, TangentDirection.Right, TangentMode.Linear);
curve.MoveKey(i, (Keyframe)boxed);
curve.SmoothTangents(i, 0f);
}
}