private UndoPropertyModification[] ProcessAutoKey(UndoPropertyModification[] modifications) { BeginKeyModification(); RecordingState recordingState = new RecordingState(state, RecordingStateMode.AutoKey); UndoPropertyModification[] discardedModifications = AnimationRecording.Process(recordingState, modifications); EndKeyModification(); return(discardedModifications); }
private UndoPropertyModification[] RegisterCandidates(UndoPropertyModification[] modifications) { bool hasCandidates = AnimationMode.IsRecordingCandidates(); if (!hasCandidates) { StartCandidateRecording(); } CandidateRecordingState recordingState = new CandidateRecordingState(state, m_CandidateClip); UndoPropertyModification[] discardedModifications = AnimationRecording.Process(recordingState, modifications); // No modifications were added to the candidate clip, stop recording candidates. if (!hasCandidates && discardedModifications.Length == modifications.Length) { StopCandidateRecording(); } // Make sure inspector is repainted after adding new candidates to get appropriate feedback. InspectorWindow.RepaintAllInspectors(); return(discardedModifications); }
public void AddKey(PropertyModification[] modifications) { var undoModifications = new UndoPropertyModification[modifications.Length]; for (int i = 0; i < modifications.Length; ++i) { var modification = modifications[i]; undoModifications[i].previousValue = modification; undoModifications[i].currentValue = modification; } BeginKeyModification(); var recordingState = new RecordingState(state, RecordingStateMode.ManualKey); AnimationRecording.Process(recordingState, undoModifications); EndKeyModification(); RemoveFromCandidates(modifications); ResampleAnimation(); state.Repaint(); }