From 572257d3b043f47c09c8a6599b7159eaba77fa42 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Sun, 6 Nov 2016 22:15:52 +0100 Subject: [PATCH] Move the rendertime into a property and remove the toggleFrametimeType Make OptionProperty work in Radio mode Rename DROPDOWN and RADIO to Dropdown and Radio --- include/openspace/properties/optionproperty.h | 4 +- include/openspace/rendering/renderengine.h | 6 ++- modules/onscreengui/src/renderproperties.cpp | 10 ++-- scripts/bind_keys.lua | 16 ------ scripts/common.lua | 11 ++-- src/engine/settingsengine.cpp | 2 +- src/properties/optionproperty.cpp | 4 +- src/rendering/renderengine.cpp | 51 +++++++++---------- src/rendering/renderengine_lua.inl | 18 ------- 9 files changed, 45 insertions(+), 77 deletions(-) diff --git a/include/openspace/properties/optionproperty.h b/include/openspace/properties/optionproperty.h index 39466779cf..7f153af8da 100644 --- a/include/openspace/properties/optionproperty.h +++ b/include/openspace/properties/optionproperty.h @@ -51,8 +51,8 @@ public: }; enum class DisplayType { - RADIO, - DROPDOWN + Radio, + Dropdown }; /** diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index d33fe86454..2120554775 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -27,6 +27,7 @@ #include +#include #include #include @@ -112,7 +113,6 @@ public: void takeScreenshot(bool applyWarping = false); void toggleInfoText(bool b); - void toggleFrametimeType(int t); // Performance measurements bool doesPerformanceMeasurements() const; @@ -213,7 +213,9 @@ private: ghoul::Dictionary _resolveData; ScreenLog* _log; - FrametimeType _frametimeType; + properties::OptionProperty _frametimeType; + + //FrametimeType _frametimeType; bool _showInfo; bool _showLog; diff --git a/modules/onscreengui/src/renderproperties.cpp b/modules/onscreengui/src/renderproperties.cpp index 60d3ce1724..74ae140c1e 100644 --- a/modules/onscreengui/src/renderproperties.cpp +++ b/modules/onscreengui/src/renderproperties.cpp @@ -72,16 +72,16 @@ void renderOptionProperty(Property* prop, const std::string& ownerName) { int value = *p; std::vector options = p->options(); switch (p->displayType()) { - case OptionProperty::DisplayType::RADIO: { + case OptionProperty::DisplayType::Radio: { + ImGui::Text(name.c_str()); + ImGui::Separator(); for (const OptionProperty::Option& o : options) { - ImGui::RadioButton(name.c_str(), &value, o.value); - ImGui::SameLine(); - ImGui::Text(o.description.c_str()); + ImGui::RadioButton(o.description.c_str(), &value, o.value); renderTooltip(prop); } break; } - case OptionProperty::DisplayType::DROPDOWN: { + case OptionProperty::DisplayType::Dropdown: { std::string nodeNames = ""; for (const OptionProperty::Option& o : options) { nodeNames += o.description + '\0'; diff --git a/scripts/bind_keys.lua b/scripts/bind_keys.lua index 3cd8f4cee0..2574db6b05 100644 --- a/scripts/bind_keys.lua +++ b/scripts/bind_keys.lua @@ -18,19 +18,3 @@ helper.setDeltaTimeKeys({ 2592000, 5184000, 7776000, 15552000, 31536000, 63072000, 157680000, 315360000, 630720000, 1576800000 }) -- OBS: One month (1mo) is approximated by 30 days. - - -openspace.bindKey("q", helper.renderable.toggle('SunMarker')) -openspace.bindKey("e", helper.renderable.toggle('EarthMarker')) -openspace.bindKey("x", helper.renderable.toggle('Constellation Bounds')) - ---openspace.bindKey("c", "openspace.parallel.setAddress('130.236.142.51');openspace.parallel.setPassword('newhorizons-20150714');openspace.parallel.connect();") - ---openspace.bindKey("h", "openspace.iswa.setBaseUrl('https://iswa-demo-server.herokuapp.com/')"); -openspace.bindKey("g", "openspace.iswa.setBaseUrl('http://128.183.168.116:3000/')"); -openspace.bindKey("l", "openspace.iswa.setBaseUrl('http://localhost:3000/')"); - -openspace.bindKey("v", "openspace.time.setTime('2015-03-15T02:00:00.00')"); - -openspace.bindKeyLocal("h", "openspace.parallel.setAddress('127.0.0.1');openspace.parallel.setPort('25001');openspace.parallel.setPassword('test');openspace.parallel.connect();openspace.parallel.requestHostship('test');") -openspace.bindKeyLocal("c", "openspace.parallel.setAddress('127.0.0.1');openspace.parallel.setPort('25001');openspace.parallel.setPassword('test');openspace.parallel.connect();") diff --git a/scripts/common.lua b/scripts/common.lua index 288d8f3675..26d55949df 100644 --- a/scripts/common.lua +++ b/scripts/common.lua @@ -23,9 +23,6 @@ helper.setCommonKeys = function() "Toogles performance measurements that shows rendering time informations" ) - openspace.bindKeyLocal("t", "openspace.toggleFrametimeType(1)") - openspace.bindKeyLocal("Shift+t", "openspace.toggleFrametimeType(0)") - openspace.bindKeyLocal("ESC", "openspace.toggleShutdown()") openspace.bindKeyLocal("PRINT_SCREEN", "openspace.takeScreenshot()") @@ -73,7 +70,7 @@ end helper.property.increment = function(property, value) local v = value or 1 local escaped_property = "'" .. property .. "'" - return "openspace.setPropertyValue(" .. escaped_property .. ", openspace.getPropertyValue(" .. escaped_property .. ") + " .. v .. ")" + return "openspace.setPropertyValue(" .. escaped_property .. ", openspace.getPropertyValue(" .. escaped_property .. ") + " .. v .. ");" end -- Function that returns the string that decrements the 'property' by the 'value' @@ -81,6 +78,12 @@ helper.property.decrement = function(property, value) return helper.property.increment(property, -value) end +-- Function that sets a property to a specify value +helper.property.set = function(property, value) + local escaped_property = "'" .. property .. "'" + return "openspace.setPropertyValue(" .. escaped_property .. ", " .. value .. ");" +end + -- Function that returns the string that enables/disables the renderable 'renderable' helper.renderable.toggle = function(renderable) return helper.property.invert(renderable .. ".renderable.enabled") diff --git a/src/engine/settingsengine.cpp b/src/engine/settingsengine.cpp index 45e76077ee..f0564efc68 100644 --- a/src/engine/settingsengine.cpp +++ b/src/engine/settingsengine.cpp @@ -48,7 +48,7 @@ namespace openspace { SettingsEngine::SettingsEngine() : _eyeSeparation("eyeSeparation", "Eye Separation" , 0.f, 0.f, 10.f) - , _scenes("scenes", "Scene", properties::OptionProperty::DisplayType::DROPDOWN) + , _scenes("scenes", "Scene", properties::OptionProperty::DisplayType::Dropdown) , _showFrameNumber("showFrameNumber", "Show frame number", false) , _busyWaitForDecode("busyWaitForDecode", "Busy Wait for decode", false) , _logSGCTOutOfOrderErrors("logSGCTOutOfOrderErrors", "Log SGCT out-of-order", false) diff --git a/src/properties/optionproperty.cpp b/src/properties/optionproperty.cpp index b205a4e9fd..f3a6112f9c 100644 --- a/src/properties/optionproperty.cpp +++ b/src/properties/optionproperty.cpp @@ -35,7 +35,7 @@ const std::string OptionProperty::OptionsKey = "Options"; OptionProperty::OptionProperty(std::string identifier, std::string guiName) : IntProperty(std::move(identifier), std::move(guiName)) - , _displayType(DisplayType::RADIO) + , _displayType(DisplayType::Radio) {} OptionProperty::OptionProperty(std::string identifier, std::string guiName, DisplayType displayType) @@ -61,7 +61,7 @@ void OptionProperty::addOption(int value, std::string desc) { option.value = value; option.description = desc; - for (auto o : _options) { + for (const auto& o : _options) { if (o.value == option.value) { LWARNING("The value of option {" << o.value << " -> " << o.description << "} was already registered when trying to add option {" << option.value << diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index da6d76895b..b6c4519025 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -114,10 +114,15 @@ const std::vector RenderEngine::FrametimeTypes({ RenderEngine::RenderEngine() : _mainCamera(nullptr) + , _performanceMeasurements("performanceMeasurements", "Performance Measurements") + , _frametimeType( + "frametimeType", + "Type of the frametime display", + properties::OptionProperty::DisplayType::Dropdown + ) , _sceneGraph(nullptr) , _renderer(nullptr) , _rendererImplementation(RendererImplementation::Invalid) - , _performanceMeasurements("performanceMeasurements", "Performance Measurements") , _performanceManager(nullptr) , _log(nullptr) , _showInfo(true) @@ -129,7 +134,7 @@ RenderEngine::RenderEngine() , _currentFadeTime(0.f) , _fadeDirection(0) , _frameNumber(0) - , _frametimeType(FrametimeType::DtTimeAvg) + //, _frametimeType(FrametimeType::DtTimeAvg) { setName("RenderEngine"); @@ -143,10 +148,22 @@ RenderEngine::RenderEngine() _performanceManager = nullptr; } - } - ); - + }); addProperty(_performanceMeasurements); + + _frametimeType.addOption( + static_cast(FrametimeType::DtTimeAvg), + "Average Deltatime" + ); + _frametimeType.addOption( + static_cast(FrametimeType::FPS), + "Frames per second" + ); + _frametimeType.addOption( + static_cast(FrametimeType::FPSAvg), + "Average frames per second" + ); + addProperty(_frametimeType); } RenderEngine::~RenderEngine() { @@ -527,21 +544,6 @@ void RenderEngine::toggleInfoText(bool b) { _showInfo = b; } -void RenderEngine::toggleFrametimeType(int t) { - std::vector::const_iterator it = std::find( - FrametimeTypes.begin(), FrametimeTypes.end(), _frametimeType); - - if (!t && it == FrametimeTypes.begin()) - it = FrametimeTypes.end(); - - t > 0 ? ++it : --it; - - if (t && it == FrametimeTypes.end()) - it = FrametimeTypes.begin(); - - _frametimeType = *it; -} - Scene* RenderEngine::scene() { ghoul_assert(_sceneGraph, "Scenegraph not initialized"); return _sceneGraph; @@ -771,12 +773,6 @@ scripting::LuaLibrary RenderEngine::luaLibrary() { "bool", "Toggles the showing of render information on-screen text" }, - { - "toggleFrametimeType", - &luascriptfunctions::toggleFrametimeType, - "int", - "Toggle showing FPS or Average Frametime in heads up info" - }, { "toggleFade", &luascriptfunctions::toggleFade, @@ -1313,7 +1309,8 @@ void RenderEngine::renderInformation() { Time::ref().deltaTime() ); - switch (_frametimeType) { + FrametimeType frametimeType = FrametimeType(_frametimeType.value()); + switch (frametimeType) { case FrametimeType::DtTimeAvg: RenderFontCr(*_fontInfo, penPosition, diff --git a/src/rendering/renderengine_lua.inl b/src/rendering/renderengine_lua.inl index 9dae62a6c2..4134ce44fc 100644 --- a/src/rendering/renderengine_lua.inl +++ b/src/rendering/renderengine_lua.inl @@ -105,24 +105,6 @@ int showRenderInformation(lua_State* L) { return 0; } -/** -* \ingroup LuaScripts -* toggleFramerateType(bool): -* Cycle through showing FPS or Average Frametime in heads up info -*/ -int toggleFrametimeType(lua_State* L) { - int nArguments = lua_gettop(L); - if (nArguments != 1) - return luaL_error(L, "Expected %i arguments, got %i", 1, nArguments); - - const int type = lua_type(L, -1); - if (type != LUA_TNUMBER) - return luaL_error(L, "Expected argument of type 'number'"); - int t = lua_tonumber(L, -1); - OsEng.renderEngine().toggleFrametimeType(t); - return 0; -} - /** * \ingroup LuaScripts * toggleFade(float):