Merge pull request #12205 from Rexbas/animation-easing
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]
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user