UnityEditor.RotationCurveInterpolation.SetInterpolation C# (CSharp) Method

SetInterpolation() static private method

static private SetInterpolation ( AnimationClip clip, EditorCurveBinding curveBindings, Mode newInterpolationMode ) : void
clip UnityEngine.AnimationClip
curveBindings EditorCurveBinding
newInterpolationMode Mode
return void
        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)]);
            }
        }