internal static void SetInterpolation(AnimationClip clip, EditorCurveBinding[] curveBindings, Mode newInterpolationMode)
{
Undo.RegisterCompleteObjectUndo(clip, "Rotation Interpolation");
List<EditorCurveBinding> list = new List<EditorCurveBinding>();
List<AnimationCurve> list2 = new List<AnimationCurve>();
List<EditorCurveBinding> list3 = new List<EditorCurveBinding>();
foreach (EditorCurveBinding binding in curveBindings)
{
switch (GetModeFromCurveData(binding))
{
case Mode.Undefined:
break;
case Mode.RawQuaternions:
Debug.LogWarning("Can't convert quaternion curve: " + binding.propertyName);
break;
default:
{
AnimationCurve editorCurve = AnimationUtility.GetEditorCurve(clip, binding);
if (editorCurve != null)
{
string str = GetPrefixForInterpolation(newInterpolationMode) + '.' + ExtractComponentCharacter(binding.propertyName);
EditorCurveBinding item = new EditorCurveBinding {
propertyName = str,
type = binding.type,
path = binding.path
};
list.Add(item);
list2.Add(editorCurve);
EditorCurveBinding binding3 = new EditorCurveBinding {
propertyName = binding.propertyName,
type = binding.type,
path = binding.path
};
list3.Add(binding3);
}
break;
}
}
}
Undo.RegisterCompleteObjectUndo(clip, "Rotation Interpolation");
foreach (EditorCurveBinding binding4 in list3)
{
AnimationUtility.SetEditorCurve(clip, binding4, null);
}
foreach (EditorCurveBinding binding5 in list)
{
AnimationUtility.SetEditorCurve(clip, binding5, list2[list.IndexOf(binding5)]);
}
}