From ad997e64e6dd6b84ae21016a344eb44f4ed46298 Mon Sep 17 00:00:00 2001 From: sylvass Date: Tue, 14 Dec 2021 11:38:33 -0500 Subject: [PATCH] Update field of view when scale of target is changed --- modules/skybrowser/include/screenspaceskytarget.h | 1 + modules/skybrowser/src/screenspaceskytarget.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/modules/skybrowser/include/screenspaceskytarget.h b/modules/skybrowser/include/screenspaceskytarget.h index 0a90c65e50..4674e1d1cb 100644 --- a/modules/skybrowser/include/screenspaceskytarget.h +++ b/modules/skybrowser/include/screenspaceskytarget.h @@ -36,6 +36,7 @@ namespace openspace { // Setters void setScaleFromVfov(float verticalFov); + void setFovFromScale(); void setDimensions(glm::vec2 dimensions); void setColor(glm::ivec3 color); void setOpacity(float opacity); diff --git a/modules/skybrowser/src/screenspaceskytarget.cpp b/modules/skybrowser/src/screenspaceskytarget.cpp index 1cfafa35de..dbe253f458 100644 --- a/modules/skybrowser/src/screenspaceskytarget.cpp +++ b/modules/skybrowser/src/screenspaceskytarget.cpp @@ -108,6 +108,7 @@ namespace openspace { skybrowser::ScreenSpaceZ }; _cartesianPosition.setValue(startPos); + } ScreenSpaceSkyTarget::~ScreenSpaceSkyTarget() { @@ -258,6 +259,12 @@ namespace openspace { _scale = std::max(heightRatio, smallestHeightRatio); } + void ScreenSpaceSkyTarget::setFovFromScale() + { + glm::dvec2 fovs = skybrowser::fovWindow(); + _verticalFov = _scale * fovs.y; + } + bool ScreenSpaceSkyTarget::isLocked() const { return _isLocked; } @@ -357,5 +364,9 @@ namespace openspace { _enabled.onChange([this]() { _browser->setEnabled(_enabled); }); + _scale.onChange([&]() { + setFovFromScale(); + _browser->setVerticalFov(_verticalFov); + }); } }