private void RegisterPlaybackHotkeys() { InputUtils.RegisterHotkey(Hotkey.PlaybackStartSlowmo, () => true, () => { StopTools(); Track.StartFromFlag(); Scheduler.UpdatesPerSecond = Settings.Local.SlowmoSpeed; }); InputUtils.RegisterHotkey(Hotkey.PlaybackStartIgnoreFlag, () => true, () => { StopTools(); Track.StartIgnoreFlag(); Scheduler.DefaultSpeed(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackStartGhostFlag, () => true, () => { StopTools(); Track.ResumeFromFlag(); Scheduler.DefaultSpeed(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackStart, () => true, () => { StopTools(); Track.StartFromFlag(); Scheduler.DefaultSpeed(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackStop, () => true, () => { StopTools(); Track.Stop(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackFlag, () => true, () => { Track.Flag(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackFrameNext, () => true, () => { StopHandTool(); if (!Track.PlaybackMode) { Track.StartFromFlag(); Scheduler.DefaultSpeed(); } if (!Track.Paused) { Track.TogglePause(); } Track.NextFrame(); Invalidate(); Track.UpdateCamera(); }, null, repeat: true); InputUtils.RegisterHotkey(Hotkey.PlaybackFramePrev, () => true, () => { StopHandTool(); if (!Track.PlaybackMode) { Track.StartFromFlag(); Scheduler.DefaultSpeed(); } if (!Track.Paused) { Track.TogglePause(); } Track.PreviousFrame(); Invalidate(); Track.UpdateCamera(true); }, null, repeat: true); InputUtils.RegisterHotkey(Hotkey.PlaybackSpeedUp, () => Track.PlaybackMode, () => { PlaybackSpeedUp(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackSpeedDown, () => Track.PlaybackMode, () => { PlaybackSpeedDown(); }); InputUtils.RegisterHotkey(Hotkey.PlaybackSlowmo, () => Track.PlaybackMode, () => { if (Scheduler.UpdatesPerSecond != Settings.Local.SlowmoSpeed) { Scheduler.UpdatesPerSecond = Settings.Local.SlowmoSpeed; } else { Scheduler.DefaultSpeed(); } }); InputUtils.RegisterHotkey(Hotkey.PlaybackTogglePause, () => Track.PlaybackMode, () => { StopTools(); Track.TogglePause(); }, null, repeat: true); InputUtils.RegisterHotkey(Hotkey.PlaybackIterationNext, () => !Track.Playing, () => { StopTools(); if (!Track.PlaybackMode) { Track.StartFromFlag(); Scheduler.DefaultSpeed(); } if (!Track.Paused) { Track.TogglePause(); } if (Track.IterationsOffset != 6) { Track.IterationsOffset++; } else { Track.NextFrame(); Track.IterationsOffset = 0; Track.Camera.SetFrame(Track.Offset); } Track.InvalidateRenderRider(); Canvas.UpdateIterationUI(); }, null, repeat: true); InputUtils.RegisterHotkey(Hotkey.PlaybackIterationPrev, () => !Track.Playing, () => { if (Track.Offset != 0) { StopTools(); if (Track.IterationsOffset > 0) { Track.IterationsOffset--; } else { Track.PreviousFrame(); Track.IterationsOffset = 6; Invalidate(); Track.Camera.SetFrame(Track.Offset); } Track.InvalidateRenderRider(); Canvas.UpdateIterationUI(); } }, null, repeat: true); }