From 673b7f23256d192fb1f0c9490dcd029c1916f47e Mon Sep 17 00:00:00 2001 From: Ylva Selling Date: Wed, 27 Apr 2022 17:00:31 -0400 Subject: [PATCH] Create property in module for inverse zoom direction --- modules/skybrowser/skybrowsermodule.cpp | 12 ++++++++++++ modules/skybrowser/skybrowsermodule.h | 1 + modules/skybrowser/src/screenspaceskybrowser.cpp | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/skybrowser/skybrowsermodule.cpp b/modules/skybrowser/skybrowsermodule.cpp index 917b4376b1..fada01ae1b 100644 --- a/modules/skybrowser/skybrowsermodule.cpp +++ b/modules/skybrowser/skybrowsermodule.cpp @@ -87,6 +87,13 @@ namespace { "panel is minimized." }; + constexpr const openspace::properties::Property::PropertyInfo InverseZoomInfo = { + "InverseZoomDirection", + "Inverse Zoom Direction", + "If checked, the zoom direction of the scroll over the AAS WWT browser will be " + "inversed." + }; + struct [[codegen::Dictionary(SkyBrowserModule)]] Parameters { // [[codegen::verbatim(EnabledInfo.description)]] std::optional enabled; @@ -105,6 +112,9 @@ namespace { // [[codegen::verbatim(HideWithGuiInfo.description)]] std::optional hideTargetsBrowsersGui; + + // [[codegen::verbatim(InverseZoomInfo.description)]] + std::optional inverseZoomDirection; }; #include "skybrowsermodule_codegen.cpp" @@ -121,6 +131,7 @@ SkyBrowserModule::SkyBrowserModule() , _targetAnimationSpeed(TargetSpeedInfo, 0.2, 0.0, 1.0) , _browserAnimationSpeed(BrowserSpeedInfo, 5.0, 0.0, 10.0) , _hideTargetsBrowsersWithGui(HideWithGuiInfo, false) + , _inverseZoomDirection(InverseZoomInfo, false) { addProperty(_enabled); addProperty(_showTitleInGuiBrowser); @@ -129,6 +140,7 @@ SkyBrowserModule::SkyBrowserModule() addProperty(_targetAnimationSpeed); addProperty(_browserAnimationSpeed); addProperty(_hideTargetsBrowsersWithGui); + addProperty(_inverseZoomDirection); // Set callback functions global::callback::mouseButton->emplace(global::callback::mouseButton->begin(), diff --git a/modules/skybrowser/skybrowsermodule.h b/modules/skybrowser/skybrowsermodule.h index 8fe65c750b..8aa948f5af 100644 --- a/modules/skybrowser/skybrowsermodule.h +++ b/modules/skybrowser/skybrowsermodule.h @@ -106,6 +106,7 @@ private: properties::BoolProperty _showTitleInGuiBrowser; properties::BoolProperty _allowCameraRotation; properties::BoolProperty _hideTargetsBrowsersWithGui; + properties::BoolProperty _inverseZoomDirection; properties::DoubleProperty _cameraRotationSpeed; properties::DoubleProperty _targetAnimationSpeed; properties::DoubleProperty _browserAnimationSpeed; diff --git a/modules/skybrowser/src/screenspaceskybrowser.cpp b/modules/skybrowser/src/screenspaceskybrowser.cpp index 1480f4c222..6e6d182aa4 100644 --- a/modules/skybrowser/src/screenspaceskybrowser.cpp +++ b/modules/skybrowser/src/screenspaceskybrowser.cpp @@ -302,7 +302,7 @@ void ScreenSpaceSkyBrowser::setVerticalFovWithScroll(float scroll) { // Make scroll more sensitive the smaller the FOV double x = _verticalFov; double zoomFactor = atan(x / 50.0) + exp(x / 40.0) - 0.99999999999999999999999999999; - double zoom = scroll > 0.0 ? -zoomFactor : zoomFactor; + double zoom = scroll > 0.0 ? zoomFactor : -zoomFactor; _verticalFov = std::clamp(_verticalFov + zoom, 0.0, 70.0); }