diff --git a/res/layouts/pages/settings_display.xml.lua b/res/layouts/pages/settings_display.xml.lua index 6e64a7d6..18d45237 100644 --- a/res/layouts/pages/settings_display.xml.lua +++ b/res/layouts/pages/settings_display.xml.lua @@ -1,3 +1,14 @@ +local tostring_overrides = {} +tostring_overrides["display.framerate"] = function(x) + if x == -1 then + return "V-Sync" + elseif x == 0 then + return "Unlimited" + else + return tostring(x) + end +end + function create_setting(id, name, step, postfix, tooltip, changeonrelease) local info = core.get_setting_info(id) postfix = postfix or "" @@ -18,11 +29,18 @@ function create_setting(id, name, step, postfix, tooltip, changeonrelease) end function update_setting(x, id, name, postfix) + local str + local func = tostring_overrides[id] + if func then + str = func(x) + else + str = core.str_setting(id) + end -- updating label document[id..".L"].text = string.format( "%s: %s%s", gui.str(name, "settings"), - core.str_setting(id), + str, postfix ) end @@ -37,8 +55,8 @@ end function on_open() create_setting("camera.fov", "FOV", 1, "°") + create_setting("display.framerate", "Framerate", 1, "", "", true) create_checkbox("display.fullscreen", "Fullscreen") - create_checkbox("display.vsync", "V-Sync") create_checkbox("camera.shaking", "Camera Shaking") create_checkbox("camera.inertia", "Camera Inertia") end diff --git a/src/files/settings_io.cpp b/src/files/settings_io.cpp index 444f079f..f09ee1f2 100644 --- a/src/files/settings_io.cpp +++ b/src/files/settings_io.cpp @@ -49,7 +49,6 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) { builder.add("height", &settings.display.height); builder.add("samples", &settings.display.samples); builder.add("framerate", &settings.display.framerate); - builder.add("vsync", &settings.display.vsync); builder.add("fullscreen", &settings.display.fullscreen); builder.section("camera"); diff --git a/src/settings.hpp b/src/settings.hpp index 4f024840..ccc3f906 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -30,8 +30,6 @@ struct DisplaySettings { IntegerSetting samples {0}; /// @brief Framerate limit IntegerSetting framerate {-1, -1, 120}; - /// @brief VSync on - FlagSetting vsync {true}; }; struct ChunksSettings { diff --git a/src/window/Window.cpp b/src/window/Window.cpp index 8414c75d..174df4ed 100644 --- a/src/window/Window.cpp +++ b/src/window/Window.cpp @@ -325,7 +325,6 @@ bool Window::isFullscreen() { void Window::swapBuffers() { double currentTime = time(); if (framerate > 0 && currentTime - prevSwap < (1.0 / framerate)) { - std::cout << static_cast((1.0/framerate - (currentTime-prevSwap))*1000) << std::endl; std::this_thread::sleep_for(std::chrono::milliseconds( static_cast((1.0/framerate - (currentTime-prevSwap))*1000))); }