From be55e0973a99dd559e35d9a54dcf6eeb7f4f144a Mon Sep 17 00:00:00 2001 From: Ylva Selling Date: Wed, 4 Jan 2023 14:31:14 -0500 Subject: [PATCH] Fix bug that channels in cluster don't set the field of view to the same value after animating --- modules/skybrowser/include/targetbrowserpair.h | 1 + modules/skybrowser/src/targetbrowserpair.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/modules/skybrowser/include/targetbrowserpair.h b/modules/skybrowser/include/targetbrowserpair.h index 5168567617..cc0fdc2a9f 100644 --- a/modules/skybrowser/include/targetbrowserpair.h +++ b/modules/skybrowser/include/targetbrowserpair.h @@ -111,6 +111,7 @@ private: skybrowser::Animation _targetAnimation = skybrowser::Animation(glm::dvec3(0.0), glm::dvec3(0.0), 0.0); bool _targetIsAnimating = false; + bool _fovIsAnimating = false; // Dragging glm::dvec3 _startTargetPosition = glm::dvec3(0.0); diff --git a/modules/skybrowser/src/targetbrowserpair.cpp b/modules/skybrowser/src/targetbrowserpair.cpp index f7bd7bd4ec..8b63b54ec9 100644 --- a/modules/skybrowser/src/targetbrowserpair.cpp +++ b/modules/skybrowser/src/targetbrowserpair.cpp @@ -283,11 +283,18 @@ void TargetBrowserPair::incrementallyAnimateToCoordinate() { aimTargetGalactic(_targetNode->identifier(), _targetAnimation.newValue()); _fovAnimation.start(); _targetIsAnimating = false; + _fovIsAnimating = true; } + // After the target has animated to its position, animate the field of view if (_fovAnimation.isAnimating()) { _browser->setVerticalFov(_fovAnimation.newValue()); _targetRenderable->setVerticalFov(_browser->verticalFov()); } + else if (!_fovAnimation.isAnimating() && _fovIsAnimating) { + // Set the finished field of view + setVerticalFov(_fovAnimation.newValue()); + _fovIsAnimating = false; + } } void TargetBrowserPair::startFading(float goal, float fadeTime) {