From 4af6f57cc32a3c57ef739bbb9c85eb95dad1edca Mon Sep 17 00:00:00 2001 From: Kamil Lewan Date: Sun, 14 Oct 2018 00:04:51 +0200 Subject: [PATCH 1/4] Add settings struct to `renderer`. --- renderer.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderer.h b/renderer.h index 0f82e3c3..ab2df34b 100644 --- a/renderer.h +++ b/renderer.h @@ -115,6 +115,12 @@ class opengl_renderer { public: // types + /// Renderer runtime settings. + struct Settings + { + /** Force normal render of traction, when user is in debug mode. */ + bool force_normal_traction_render { false }; + } settings; // constructors opengl_renderer() = default; // destructor From b21ebd80b3f4bcddf45106e73ff8019af4b0a740 Mon Sep 17 00:00:00 2001 From: Kamil Lewan Date: Sat, 13 Oct 2018 23:09:23 +0200 Subject: [PATCH 2/4] Traction wire depends on renderer settings. --- Traction.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Traction.cpp b/Traction.cpp index 82153f60..9a652e31 100644 --- a/Traction.cpp +++ b/Traction.cpp @@ -531,7 +531,8 @@ glm::vec3 TTraction::wire_color() const { glm::vec3 color; - if( false == DebugModeFlag ) { + if( !DebugModeFlag || GfxRenderer.settings.force_normal_traction_render ) + { switch( Material ) { // Ra: kolory podzieliłem przez 2, bo po zmianie ambient za jasne były // trzeba uwzględnić kierunek świecenia Słońca - tylko ze Słońcem widać kolor case 1: { From b81e9e30feb54f192b5bdf1bdcf43501c185d46e Mon Sep 17 00:00:00 2001 From: Kamil Lewan Date: Sat, 13 Oct 2018 23:41:45 +0200 Subject: [PATCH 3/4] Add checkbox in debug pannel. - checkbox to force normal render mode of traction. --- driveruipanels.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/driveruipanels.cpp b/driveruipanels.cpp index 0c9b6605..02e32885 100644 --- a/driveruipanels.cpp +++ b/driveruipanels.cpp @@ -362,6 +362,14 @@ debug_panel::render() { // toggles ImGui::Separator(); ImGui::Checkbox( "Debug Mode", &DebugModeFlag ); + if( DebugModeFlag ) + { + ImGui::Indent(); + ImGui::Checkbox( + "Draw normal traction", + &GfxRenderer.settings.force_normal_traction_render ); + ImGui::Unindent(); + } } ImGui::End(); } From 22c32b0119e60b4cb53a1a1e347bc389d00ed793 Mon Sep 17 00:00:00 2001 From: milek7 Date: Sun, 27 Jan 2019 13:00:24 +0100 Subject: [PATCH 4/4] apply lerp also to walk speed --- Camera.cpp | 12 +++++++++--- keyboardinput.cpp | 6 +++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Camera.cpp b/Camera.cpp index 28405e8a..7a09b48a 100644 --- a/Camera.cpp +++ b/Camera.cpp @@ -73,10 +73,14 @@ TCamera::OnCommand( command_data const &Command ) { 30.0 : 1.0 ); + // threshold position on stick between walk lerp and walk/run lerp + auto const stickthreshold = 2.0 / 3.0; + // left-right auto const movexparam { Command.param1 }; - // 2/3rd of the stick range enables walk speed, past that we lerp between walk and run speed - auto const movex { walkspeed + ( std::max( 0.0, std::abs( movexparam ) - 0.65 ) / 0.35 ) * std::max( 0.0, movespeed - walkspeed ) }; + // 2/3rd of the stick range lerps walk speed, past that we lerp between max walk and run speed + auto const movex { walkspeed * std::min(std::abs(movexparam) * (1.0 / stickthreshold), 1.0) + + ( std::max( 0.0, std::abs( movexparam ) - stickthreshold ) / (1.0 - stickthreshold) ) * std::max( 0.0, movespeed - walkspeed ) }; m_moverate.x = ( movexparam > 0.0 ? movex * speedmultiplier : @@ -85,7 +89,9 @@ TCamera::OnCommand( command_data const &Command ) { // forward-back double const movezparam { Command.param2 }; - auto const movez { walkspeed + ( std::max( 0.0, std::abs( movezparam ) - 0.65 ) / 0.35 ) * std::max( 0.0, movespeed - walkspeed ) }; + auto const movez { walkspeed * std::min(std::abs(movezparam) * (1.0 / stickthreshold), 1.0) + + ( std::max( 0.0, std::abs( movezparam ) - stickthreshold ) / (1.0 - stickthreshold) ) * std::max( 0.0, movespeed - walkspeed ) }; + // NOTE: z-axis is flipped given world coordinate system m_moverate.z = ( movezparam > 0.0 ? -movez * speedmultiplier : diff --git a/keyboardinput.cpp b/keyboardinput.cpp index dcb79db2..d405af34 100644 --- a/keyboardinput.cpp +++ b/keyboardinput.cpp @@ -228,12 +228,12 @@ keyboard_input::poll() { glm::vec2 const movementhorizontal { // x-axis - ( Global.shiftState ? 1.f : 0.5f ) * + ( Global.shiftState ? 1.f : 0.66f ) * ( input::keys[ m_bindingscache.left ] != GLFW_RELEASE ? -1.f : input::keys[ m_bindingscache.right ] != GLFW_RELEASE ? 1.f : 0.f ), // z-axis - ( Global.shiftState ? 1.f : 0.5f ) * + ( Global.shiftState ? 1.f : 0.66f ) * ( input::keys[ m_bindingscache.forward ] != GLFW_RELEASE ? 1.f : input::keys[ m_bindingscache.back ] != GLFW_RELEASE ? -1.f : 0.f ) }; @@ -254,7 +254,7 @@ keyboard_input::poll() { float const movementvertical { // y-axis - ( Global.shiftState ? 1.f : 0.5f ) * + ( Global.shiftState ? 1.f : 0.66f ) * ( input::keys[ m_bindingscache.up ] != GLFW_RELEASE ? 1.f : input::keys[ m_bindingscache.down ] != GLFW_RELEASE ? -1.f : 0.f ) };