private static void Internal_UpdateTangents(AnimationCurve curve, int index)
{
if ((index >= 0) && (index < curve.length))
{
Keyframe key = curve[index];
if ((GetKeyLeftTangentMode(key) == TangentMode.Linear) && (index >= 1))
{
key.inTangent = Internal_CalculateLinearTangent(curve, index, index - 1);
curve.MoveKey(index, key);
}
if ((GetKeyRightTangentMode(key) == TangentMode.Linear) && ((index + 1) < curve.length))
{
key.outTangent = Internal_CalculateLinearTangent(curve, index, index + 1);
curve.MoveKey(index, key);
}
if ((GetKeyLeftTangentMode(key) == TangentMode.ClampedAuto) || (GetKeyRightTangentMode(key) == TangentMode.ClampedAuto))
{
Internal_CalculateAutoTangent(curve, index);
}
if ((GetKeyLeftTangentMode(key) == TangentMode.Auto) || (GetKeyRightTangentMode(key) == TangentMode.Auto))
{
curve.SmoothTangents(index, 0f);
}
if (((GetKeyLeftTangentMode(key) == TangentMode.Free) && (GetKeyRightTangentMode(key) == TangentMode.Free)) && !GetKeyBroken(key))
{
key.outTangent = key.inTangent;
curve.MoveKey(index, key);
}
if (GetKeyLeftTangentMode(key) == TangentMode.Constant)
{
key.inTangent = float.PositiveInfinity;
curve.MoveKey(index, key);
}
if (GetKeyRightTangentMode(key) == TangentMode.Constant)
{
key.outTangent = float.PositiveInfinity;
curve.MoveKey(index, key);
}
}
}