QmlDesigner: Implement drag-n-drop materials to the 3D Editor

Fixes: QDS-7011
Change-Id: Id6e4aea2c19561ea861507480636ae2358ece067
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Mahmoud Badri
2022-07-01 11:35:09 +03:00
parent b5a34902d0
commit 5a9a6804ee
11 changed files with 85 additions and 4 deletions

View File

@@ -239,6 +239,16 @@ void Edit3DView::customNotification(const AbstractView *view, const QString &ide
resetPuppet();
}
void Edit3DView::modelAtPosReady(const ModelNode &modelNode)
{
if (!m_droppedMaterial.isValid() || !modelNode.isValid())
return;
executeInTransaction(__FUNCTION__, [&] {
assignMaterialTo3dModel(modelNode, m_droppedMaterial);
});
}
void Edit3DView::sendInputEvent(QInputEvent *e) const
{
if (nodeInstanceView())
@@ -605,5 +615,10 @@ void Edit3DView::addQuick3DImport()
tr("Could not add QtQuick3D import to project."));
}
void Edit3DView::dropMaterial(const ModelNode &matNode, const QPointF &pos)
{
m_droppedMaterial = matNode;
QmlDesignerPlugin::instance()->viewManager().nodeInstanceView()->view3DAction({View3DActionCommand::GetModelAtPos, pos});
}
} // namespace QmlDesigner