Merge pull request #12205 from Rexbas/animation-easing

Gui: Add easing to navigation animations
This commit is contained in:
Chris Hennes
2024-03-04 10:37:06 -06:00
committed by GitHub
5 changed files with 11 additions and 6 deletions

View File

@@ -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()

View File

@@ -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]

View File

@@ -35,7 +35,7 @@
<FCBool Name="ShowSelectionBoundingBox" Value="0"/>
<FCBool Name="UseNavigationAnimations" Value="1"/>
<FCBool Name="UseSpinningAnimations" Value="0"/>
<FCFloat Name="AnimationDuration" Value="0.25"/>
<FCFloat Name="AnimationDuration" Value="500"/>
<FCBool Name="UseVBO" Value="0"/>
<FCFloat Name="ViewScalingFactor" Value="1.0"/>
<FCBool Name="ZoomAtCursor" Value="1"/>

View File

@@ -773,7 +773,7 @@ Mouse tilting is not disabled by this setting.</string>
<number>50</number>
</property>
<property name="value">
<number>250</number>
<number>500</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>AnimationDuration</cstring>

View File

@@ -3406,11 +3406,15 @@ void View3DInventorViewer::startAnimation(const SbRotation& orientation,
if (duration < 0) {
duration = App::GetApplication()
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")
->GetInt("AnimationDuration", 250);
->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);
}