forked from qt-creator/qt-creator
QmlDesigner: Add visualization gizmo for ParticleEmitter3D
Particle emitters are now visualized in 3D edit view either by a small sphere for point emitters or by a proper model for model based emitters. The visualization model is rendered transparent. The visualization models can be displayed either always or only when the parent particle system is active in editor. Trail emitters are not visualized, as any visualization would be misleading, since these emitters follow generated particles. Fixes: QDS-6189 Change-Id: Idb6f12cadd9cea8110e5290cc18443aeb62c38d6 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
@@ -118,17 +118,18 @@ void Edit3DView::renderImage3DChanged(const QImage &img)
|
||||
|
||||
void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
|
||||
{
|
||||
const QString sceneKey = QStringLiteral("sceneInstanceId");
|
||||
const QString selectKey = QStringLiteral("selectionMode");
|
||||
const QString transformKey = QStringLiteral("transformMode");
|
||||
const QString perspectiveKey = QStringLiteral("usePerspective");
|
||||
const QString orientationKey = QStringLiteral("globalOrientation");
|
||||
const QString editLightKey = QStringLiteral("showEditLight");
|
||||
const QString gridKey = QStringLiteral("showGrid");
|
||||
const QString selectionBoxKey = QStringLiteral("showSelectionBox");
|
||||
const QString iconGizmoKey = QStringLiteral("showIconGizmo");
|
||||
const QString cameraFrustumKey = QStringLiteral("showCameraFrustum");
|
||||
const QString particlesPlayKey = QStringLiteral("particlePlay");
|
||||
const QString sceneKey = QStringLiteral("sceneInstanceId");
|
||||
const QString selectKey = QStringLiteral("selectionMode");
|
||||
const QString transformKey = QStringLiteral("transformMode");
|
||||
const QString perspectiveKey = QStringLiteral("usePerspective");
|
||||
const QString orientationKey = QStringLiteral("globalOrientation");
|
||||
const QString editLightKey = QStringLiteral("showEditLight");
|
||||
const QString gridKey = QStringLiteral("showGrid");
|
||||
const QString selectionBoxKey = QStringLiteral("showSelectionBox");
|
||||
const QString iconGizmoKey = QStringLiteral("showIconGizmo");
|
||||
const QString cameraFrustumKey = QStringLiteral("showCameraFrustum");
|
||||
const QString particleEmitterKey = QStringLiteral("showParticleEmitter");
|
||||
const QString particlesPlayKey = QStringLiteral("particlePlay");
|
||||
|
||||
if (sceneState.contains(sceneKey)) {
|
||||
qint32 newActiveScene = sceneState[sceneKey].value<qint32>();
|
||||
@@ -188,6 +189,11 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
|
||||
else
|
||||
m_showCameraFrustumAction->action()->setChecked(false);
|
||||
|
||||
if (sceneState.contains(particleEmitterKey))
|
||||
m_showParticleEmitterAction->action()->setChecked(sceneState[particleEmitterKey].toBool());
|
||||
else
|
||||
m_showParticleEmitterAction->action()->setChecked(false);
|
||||
|
||||
if (sceneState.contains(particlesPlayKey))
|
||||
m_particlesPlayAction->action()->setChecked(sceneState[particlesPlayKey].toBool());
|
||||
else
|
||||
@@ -352,6 +358,12 @@ void Edit3DView::createEdit3DActions()
|
||||
QKeySequence(Qt::Key_C), true, false, {}, {}, nullptr,
|
||||
QCoreApplication::translate("ShowCameraFrustumAction", "Toggle between always showing the camera frustum visualization and only showing it when the camera is selected."));
|
||||
|
||||
m_showParticleEmitterAction = new Edit3DAction(
|
||||
QmlDesigner::Constants::EDIT3D_EDIT_SHOW_PARTICLE_EMITTER, View3DActionCommand::ShowParticleEmitter,
|
||||
QCoreApplication::translate("ShowParticleEmitterAction", "Always Show Particle Emitters"),
|
||||
QKeySequence(Qt::Key_M), true, false, {}, {}, nullptr,
|
||||
QCoreApplication::translate("ShowParticleEmitterAction", "Toggle between always showing the particle emitter visualization and only showing it when the emitter is selected."));
|
||||
|
||||
SelectionContextOperation resetTrigger = [this](const SelectionContext &) {
|
||||
m_particlesPlayAction->action()->setEnabled(particlemode);
|
||||
m_particlesRestartAction->action()->setEnabled(particlemode);
|
||||
@@ -458,6 +470,7 @@ void Edit3DView::createEdit3DActions()
|
||||
m_visibilityToggleActions << m_showSelectionBoxAction;
|
||||
m_visibilityToggleActions << m_showIconGizmoAction;
|
||||
m_visibilityToggleActions << m_showCameraFrustumAction;
|
||||
m_visibilityToggleActions << m_showParticleEmitterAction;
|
||||
}
|
||||
|
||||
QVector<Edit3DAction *> Edit3DView::leftActions() const
|
||||
|
||||
Reference in New Issue
Block a user