diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index 4d907622..0b3f7ad2 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,17 @@ 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, _) => DisplayServer.WindowSetVsyncMode( + value ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled + ) + }; + #endregion #region Audio diff --git a/scripts/scenes/LegacyRunner.cs b/scripts/scenes/LegacyRunner.cs index ee70ad09..ec683160 100644 --- a/scripts/scenes/LegacyRunner.cs +++ b/scripts/scenes/LegacyRunner.cs @@ -1343,8 +1343,6 @@ public override void Load() { base.Load(); - DisplayServer.WindowSetVsyncMode(DisplayServer.VSyncMode.Disabled); - MenuCursor.Instance.UpdateVisible(false, false); SceneManager.Space.UpdateState(true); SceneManager.Space.UpdateMap(CurrentAttempt.Map); diff --git a/scripts/scenes/MainMenu.cs b/scripts/scenes/MainMenu.cs index 25bac19f..011470d2 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.Value ? DisplayServer.VSyncMode.Enabled : 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..01dba9d2 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.Value ? DisplayServer.VSyncMode.Enabled : DisplayServer.VSyncMode.Disabled); } public void UpdateVolume()