public static UndoPropertyModification[] ProcessModifications(IAnimationRecordingState state, UndoPropertyModification[] modifications) { AnimationClip activeAnimationClip = state.activeAnimationClip; GameObject activeRootGameObject = state.activeRootGameObject; Animator component = activeRootGameObject.GetComponent <Animator>(); UndoPropertyModification[] result = AnimationRecording.FilterModifications(state, ref modifications); int i = 0; while (i < modifications.Length) { EditorCurveBinding binding = default(EditorCurveBinding); PropertyModification previousValue = modifications[i].previousValue; Type type = AnimationUtility.PropertyModificationToEditorCurveBinding(previousValue, activeRootGameObject, out binding); if (type != null) { if (component != null && component.isHuman && binding.type == typeof(Transform) && component.gameObject.transform != previousValue.target && component.IsBoneTransform(previousValue.target as Transform)) { Debug.LogWarning("Keyframing for humanoid rig is not supported!", previousValue.target as Transform); } else { EditorCurveBinding[] array = RotationCurveInterpolation.RemapAnimationBindingForAddKey(binding, activeAnimationClip); if (array != null) { for (int j = 0; j < array.Length; j++) { PropertyModification propertyModification = AnimationRecording.FindPropertyModification(activeRootGameObject, modifications, array[j]); if (propertyModification == null) { propertyModification = AnimationRecording.CreateDummyPropertyModification(activeRootGameObject, previousValue, array[j]); } state.AddPropertyModification(array[j], propertyModification, modifications[i].keepPrefabOverride); AnimationRecording.AddKey(state, array[j], type, propertyModification); } } else { state.AddPropertyModification(binding, previousValue, modifications[i].keepPrefabOverride); AnimationRecording.AddKey(state, binding, type, previousValue); } } } IL_19A: i++; continue; goto IL_19A; } return(result); }