public static void UpdateTangentsFromMode(AnimationCurve curve, AnimationClip clip, EditorCurveBinding curveBinding)
{
if (RotationCurveInterpolation.GetModeFromCurveData(curveBinding) == RotationCurveInterpolation.Mode.NonBaked)
{
QuaternionCurveTangentCalculation quaternionCurveTangentCalculation = default(QuaternionCurveTangentCalculation);
int curveIndexFromName = RotationCurveInterpolation.GetCurveIndexFromName(curveBinding.propertyName);
for (int i = 0; i < 3; i++)
{
if (i == curveIndexFromName)
{
quaternionCurveTangentCalculation.SetCurve(i, curve);
}
else
{
EditorCurveBinding binding = curveBinding;
binding.propertyName = "localEulerAngles." + RotationCurveInterpolation.kPostFix[i];
AnimationCurve editorCurve = AnimationUtility.GetEditorCurve(clip, binding);
if (editorCurve == null)
{
return;
}
quaternionCurveTangentCalculation.SetCurve(i, editorCurve);
}
}
quaternionCurveTangentCalculation.UpdateTangentsFromMode(curveIndexFromName);
}
else
{
CurveUtility.UpdateTangentsFromMode(curve);
}
}