diff --git a/src/engine/Mainloop.cpp b/src/engine/Mainloop.cpp index e87bc7d9..d6ca17cb 100644 --- a/src/engine/Mainloop.cpp +++ b/src/engine/Mainloop.cpp @@ -18,6 +18,7 @@ Mainloop::Mainloop(Engine& engine) : engine(engine) { void Mainloop::run() { auto& time = engine.getTime(); auto& window = engine.getWindow(); + auto& settings = engine.getSettings(); engine.setLevelConsumer([this](auto level, int64_t localPlayer) { if (level == nullptr) { @@ -46,6 +47,7 @@ void Mainloop::run() { } engine.postUpdate(); engine.nextFrame( + settings.display.adaptiveFpsInMenu.get() && dynamic_cast(engine.getScreen().get()) != nullptr ); } diff --git a/src/io/settings_io.cpp b/src/io/settings_io.cpp index 5e1c8327..f4e89338 100644 --- a/src/io/settings_io.cpp +++ b/src/io/settings_io.cpp @@ -51,6 +51,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) { builder.add("framerate", &settings.display.framerate); builder.add("limit-fps-iconified", &settings.display.limitFpsIconified); builder.add("window-mode", &settings.display.windowMode); + builder.add("adaptive-menu-fps", &settings.display.adaptiveFpsInMenu); builder.section("camera"); builder.add("sensitivity", &settings.camera.sensitivity); diff --git a/src/settings.hpp b/src/settings.hpp index f97fb513..ee35d5a4 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -31,6 +31,8 @@ struct DisplaySettings { IntegerSetting framerate {-1, -1, 120}; /// @brief Limit framerate when window is iconified FlagSetting limitFpsIconified {false}; + /// @brief Adaptive framerate in menu (experimental) + FlagSetting adaptiveFpsInMenu {false}; }; struct ChunksSettings {