refactor: Move camera restore state animation to Camera

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-02-17 11:27:36 -07:00
parent f29f40277d
commit 2e2f99f2c2

View File

@@ -330,50 +330,14 @@ void ViewportWidget::onPlaneSelectionModeStarted()
void ViewportWidget::onSketchModeEnded() void ViewportWidget::onSketchModeEnded()
{ {
auto* animGroup = new QParallelAnimationGroup(this); m_camera->animateRestoreState();
}
auto* xRotAnim = new QPropertyAnimation(m_camera, "xRotation"); void ViewportWidget::onRestoreStateAnimationFinished()
xRotAnim->setDuration(300); {
xRotAnim->setStartValue(m_camera->xRotation()); // Return to showing the base XY grid when not in a sketch
xRotAnim->setEndValue(m_camera->savedXRot()); m_currentPlane = SketchPlane::XY;
xRotAnim->setEasingCurve(QEasingCurve::InOutQuad); update();
animGroup->addAnimation(xRotAnim);
auto* yRotAnim = new QPropertyAnimation(m_camera, "yRotation");
yRotAnim->setDuration(300);
yRotAnim->setStartValue(m_camera->yRotation());
yRotAnim->setEndValue(m_camera->savedYRot());
yRotAnim->setEasingCurve(QEasingCurve::InOutQuad);
animGroup->addAnimation(yRotAnim);
auto* panXAnim = new QPropertyAnimation(m_camera, "panX");
panXAnim->setDuration(300);
panXAnim->setStartValue(m_camera->panX());
panXAnim->setEndValue(m_camera->savedPanX());
panXAnim->setEasingCurve(QEasingCurve::InOutQuad);
animGroup->addAnimation(panXAnim);
auto* panYAnim = new QPropertyAnimation(m_camera, "panY");
panYAnim->setDuration(300);
panYAnim->setStartValue(m_camera->panY());
panYAnim->setEndValue(m_camera->savedPanY());
panYAnim->setEasingCurve(QEasingCurve::InOutQuad);
animGroup->addAnimation(panYAnim);
auto* zoomAnim = new QPropertyAnimation(m_camera, "zoom");
zoomAnim->setDuration(300);
zoomAnim->setStartValue(m_camera->zoom());
zoomAnim->setEndValue(m_camera->savedZoom());
zoomAnim->setEasingCurve(QEasingCurve::InOutQuad);
animGroup->addAnimation(zoomAnim);
connect(animGroup, &QParallelAnimationGroup::finished, this, [this]() {
// Return to showing the base XY grid when not in a sketch
m_currentPlane = SketchPlane::XY;
update();
});
animGroup->start(QAbstractAnimation::DeleteWhenStopped);
} }
QVector3D ViewportWidget::project(const QVector3D& worldCoord, const QMatrix4x4& modelView, const QMatrix4x4& projection, const QRect& viewport) QVector3D ViewportWidget::project(const QVector3D& worldCoord, const QMatrix4x4& modelView, const QMatrix4x4& projection, const QRect& viewport)