diff --git a/scripts/Rhythia.cs b/scripts/Rhythia.cs index 88bf6777..c33f4f2f 100644 --- a/scripts/Rhythia.cs +++ b/scripts/Rhythia.cs @@ -160,7 +160,8 @@ public static void Quit() Discord.Client.Dispose(); Tween quitTween = Instance.CreateTween(); - quitTween.TweenCallback(Callable.From(() => { + quitTween.TweenCallback(Callable.From(() => + { Logger.Log("Quitting"); Instance.GetTree().Quit(); })).SetDelay(0.5); diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index 4d907622..5e6aa4f7 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -243,6 +243,12 @@ public partial class SettingsProfile [Order] public SettingsItem FPS { get; private set; } + /// + /// Toggles V-Sync when in menus + /// + [Order] + public SettingsItem VSyncMenus { get; private set; } + #endregion #region Audio @@ -823,6 +829,22 @@ public SettingsProfile() UpdateAction = (value, _) => Engine.MaxFps = LockFPS.Value ? value : 0 }; + VSyncMenus = new(true) + { + Id = "VSyncMenus", + Title = "V-Sync in Menus", + Description = "Toggles V-Sync when in menus", + Section = SettingsSection.Video, + UpdateAction = (value, _) => + { + // TODO: Update this check when new runner is merged + if (SceneManager.Scene is not LegacyRunner) + { + DisplayServer.WindowSetVsyncMode(value ? DisplayServer.VSyncMode.Adaptive : DisplayServer.VSyncMode.Disabled); + } + } + }; + #endregion #region Audio diff --git a/scripts/scenes/LegacyRunner.cs b/scripts/scenes/LegacyRunner.cs index ee70ad09..dbda8b2f 100644 --- a/scripts/scenes/LegacyRunner.cs +++ b/scripts/scenes/LegacyRunner.cs @@ -1343,6 +1343,7 @@ public override void Load() { base.Load(); + // TODO: Update this when new runner is merged DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Disabled); MenuCursor.Instance.UpdateVisible(false, false); diff --git a/scripts/scenes/MainMenu.cs b/scripts/scenes/MainMenu.cs index 25bac19f..d89544f3 100644 --- a/scripts/scenes/MainMenu.cs +++ b/scripts/scenes/MainMenu.cs @@ -84,7 +84,7 @@ public override void Load() { base.Load(); - DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Adaptive); + DisplayServer.WindowSetVsyncMode(SettingsManager.Instance.Settings.VSyncMenus ? DisplayServer.VSyncMode.Adaptive : DisplayServer.VSyncMode.Disabled); // Apply any map selection that was deferred while menu was off-tree (e.g. import from another scene) MapInfo.ApplyPendingSelection(); diff --git a/scripts/scenes/Results.cs b/scripts/scenes/Results.cs index 9cf51b6d..e8d16867 100644 --- a/scripts/scenes/Results.cs +++ b/scripts/scenes/Results.cs @@ -156,7 +156,7 @@ public override void Load() { base.Load(); - DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Adaptive); + DisplayServer.WindowSetVsyncMode(SettingsManager.Instance.Settings.VSyncMenus ? DisplayServer.VSyncMode.Adaptive : DisplayServer.VSyncMode.Disabled); } public void UpdateVolume()