Gui: Add easing to navigation animations
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -3409,8 +3409,12 @@ void View3DInventorViewer::startAnimation(const SbRotation& orientation,
|
||||
->GetInt("AnimationDuration", 500);
|
||||
}
|
||||
|
||||
QEasingCurve::Type easingCurve = static_cast<QEasingCurve::Type>(App::GetApplication()
|
||||
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")
|
||||
->GetInt("NavigationAnimationEasingCurve", QEasingCurve::Type::InOutCubic));
|
||||
|
||||
auto animation = std::make_shared<FixedTimeAnimation>(
|
||||
navigation, orientation, rotationCenter, translation, duration);
|
||||
navigation, orientation, rotationCenter, translation, duration, easingCurve);
|
||||
|
||||
navigation->startAnimating(animation, wait);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user