QmlDesigner: Add camera alignment buttons

Add a button to 3D edit view that aligns the selected cameras to the
view camera. Add another button that aligns the view camera to a
selected camera.

Task-number: QDS-4482
Change-Id: Ibe6ceaf498db10f45c8c351e3a108419d8d7a59b
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Jere Tuliniemi
2021-08-12 05:31:36 +03:00
committed by Miikka Heikkinen
parent f6a26fb13e
commit a03a50a262
19 changed files with 220 additions and 1 deletions

View File

@@ -90,6 +90,16 @@ Edit3DWidget *Edit3DView::edit3DWidget() const
return m_edit3DWidget.data();
}
void Edit3DView::selectedNodesChanged(const QList<ModelNode> &selectedNodeList, const QList<ModelNode> &lastSelectedNodeList)
{
SelectionContext selectionContext(this);
selectionContext.setUpdateMode(SelectionContext::UpdateMode::Fast);
if (m_alignCamerasAction)
m_alignCamerasAction->currentContextChanged(selectionContext);
if (m_alignViewAction)
m_alignViewAction->currentContextChanged(selectionContext);
}
void Edit3DView::renderImage3DChanged(const QImage &img)
{
edit3DWidget()->canvas()->updateRenderImage(img);
@@ -256,6 +266,16 @@ void Edit3DView::createEdit3DActions()
QCoreApplication::translate("FitToViewAction", "Fit Selected Object to View"),
QKeySequence(Qt::Key_F), false, false, Icons::EDIT3D_FIT_SELECTED_OFF.icon(), {});
m_alignCamerasAction = new Edit3DCameraAction(
QmlDesigner::Constants::EDIT3D_ALIGN_CAMERAS, View3DActionCommand::AlignCamerasToView,
QCoreApplication::translate("AlignCamerasToViewAction", "Align Selected Cameras to View"),
QKeySequence(), false, false, Icons::EDIT3D_ALIGN_CAMERA_ON.icon(), {});
m_alignViewAction = new Edit3DCameraAction(
QmlDesigner::Constants::EDIT3D_ALIGN_VIEW, View3DActionCommand::AlignViewToCamera,
QCoreApplication::translate("AlignCamerasToViewAction", "Align View to Selected Camera"),
QKeySequence(), false, false, Icons::EDIT3D_ALIGN_VIEW_ON.icon(), {});
m_cameraModeAction
= new Edit3DAction(
QmlDesigner::Constants::EDIT3D_EDIT_CAMERA, View3DActionCommand::CameraToggle,
@@ -351,6 +371,9 @@ void Edit3DView::createEdit3DActions()
m_leftActions << m_orientationModeAction;
m_leftActions << m_editLightAction;
m_leftActions << m_showGridAction;
m_leftActions << nullptr;
m_leftActions << m_alignCamerasAction;
m_leftActions << m_alignViewAction;
m_rightActions << m_particleViewModeAction;
m_rightActions << m_particlesPlayAction;