From 7cfb4b10e50b2424e3630aa84232c2b34bb34c5e Mon Sep 17 00:00:00 2001 From: Rexbas Date: Tue, 30 Jan 2024 20:04:59 +0100 Subject: [PATCH] Gui: Add easing to navigation animations --- src/Gui/NavigationAnimation.cpp | 3 ++- src/Gui/NavigationAnimation.h | 2 +- src/Gui/View3DInventorViewer.cpp | 6 +++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Gui/NavigationAnimation.cpp b/src/Gui/NavigationAnimation.cpp index 9b0c9a595c..c1601d5504 100644 --- a/src/Gui/NavigationAnimation.cpp +++ b/src/Gui/NavigationAnimation.cpp @@ -44,7 +44,7 @@ void NavigationAnimation::onStop([[maybe_unused]] bool finished) FixedTimeAnimation::FixedTimeAnimation(NavigationStyle* navigation, const SbRotation& orientation, const SbVec3f& rotationCenter, const SbVec3f& translation, - int duration) + int duration, const QEasingCurve::Type easingCurve) : NavigationAnimation(navigation) , targetOrientation(orientation) , targetTranslation(translation) @@ -53,6 +53,7 @@ FixedTimeAnimation::FixedTimeAnimation(NavigationStyle* navigation, const SbRota setDuration(duration); setStartValue(0.0); setEndValue(duration * 1.0); + setEasingCurve(easingCurve); } void FixedTimeAnimation::initialize() diff --git a/src/Gui/NavigationAnimation.h b/src/Gui/NavigationAnimation.h index 6efdae3b42..1308a8e95e 100644 --- a/src/Gui/NavigationAnimation.h +++ b/src/Gui/NavigationAnimation.h @@ -60,7 +60,7 @@ class GuiExport FixedTimeAnimation : public NavigationAnimation public: explicit FixedTimeAnimation(NavigationStyle* navigation, const SbRotation& orientation, const SbVec3f& rotationCenter, const SbVec3f& translation, - int duration); + int duration, const QEasingCurve::Type easingCurve); private: float angularVelocity; // [rad/ms] diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index 35db6d8efd..62322b8683 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -3409,8 +3409,12 @@ void View3DInventorViewer::startAnimation(const SbRotation& orientation, ->GetInt("AnimationDuration", 500); } + QEasingCurve::Type easingCurve = static_cast(App::GetApplication() + .GetParameterGroupByPath("User parameter:BaseApp/Preferences/View") + ->GetInt("NavigationAnimationEasingCurve", QEasingCurve::Type::InOutCubic)); + auto animation = std::make_shared( - navigation, orientation, rotationCenter, translation, duration); + navigation, orientation, rotationCenter, translation, duration, easingCurve); navigation->startAnimating(animation, wait); }