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