Files
qt-creator/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ParticleEmitterGizmo.qml
Lucie Gérard a7956df3ca Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.

Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-08-26 12:27:18 +00:00

113 lines
3.6 KiB
QML

// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick3D
import QtQuick3D.Particles3D
// Note: This gizmo is also used to visualize Attractor3D in addition to ParticleEmitter3D,
// as the two are very similar.
Node {
id: root
property Node targetNode: null
property var selectedNodes: []
property Node activeParticleSystem: null
property Node scene: null
property Node activeScene: null
property bool hidden: false
property bool systemHidden: false
property Node shapeModel: null
property bool globalShow: false
property bool canBeVisible: activeScene === scene && targetNode && !hidden && !systemHidden
property bool partOfActiveSystem: root.targetNode && root.targetNode.system === activeParticleSystem
property bool isEmitter: targetNode && targetNode instanceof ParticleEmitter3D
opacity: 0.15
readonly property bool selected: selectedNodes.includes(targetNode)
visible: canBeVisible && (globalShow || selected)
position: targetNode ? targetNode.scenePosition : Qt.vector3d(0, 0, 0)
rotation: targetNode ? targetNode.sceneRotation : Qt.quaternion(1, 0, 0, 0)
scale: targetNode ? targetNode.sceneScale : Qt.vector3d(1, 1, 1)
function basicShape()
{
if (targetNode && targetNode.shape && targetNode.shape instanceof ParticleShape3D) {
if (targetNode.shape.type === ParticleShape3D.Cube)
return "#Cube";
else if (targetNode.shape.type === ParticleShape3D.Cylinder)
return "#Cylinder";
}
return "#Sphere";
}
function updateShape()
{
if (shapeModel)
shapeModel.destroy();
if (!targetNode)
return;
if (targetNode.shape instanceof ParticleModelShape3D) {
shapeModel = _generalHelper.createParticleEmitterGizmoModel(targetNode, defaultMaterial);
shapeModel.parent = root;
}
}
Component.onCompleted: {
updateShape();
}
Connections {
target: targetNode
function onSystemChanged() { systemHidden = _generalHelper.isHidden(system); }
}
Connections {
target: targetNode
function onShapeChanged() { updateShape(); }
}
Connections {
target: targetNode.shape instanceof ParticleModelShape3D ? targetNode.shape
:null
function onDelegateChanged() { updateShape(); }
}
Connections {
target: targetNode.shape instanceof ParticleModelShape3D ? targetNode.shape.delegate
: null
function onSourceChanged() { updateShape(); }
}
Model {
readonly property Node _pickTarget: root.targetNode
materials: [defaultMaterial]
source: basicShape()
scale: root.targetNode && root.targetNode.shape && targetNode.shape instanceof ParticleShape3D
? root.targetNode.shape.extents.times(0.02) // default extent is 50
: autoScale.getScale(Qt.vector3d(0.1, 0.1, 0.1))
visible: !shapeModel
}
AutoScaleHelper {
id: autoScale
view3D: overlayView
}
DefaultMaterial {
id: defaultMaterial
diffuseColor: root.selected ? "#FF0000"
: root.partOfActiveSystem
? root.isEmitter ? "#FFFF00" : "#0000FF"
: "#AAAAAA"
lighting: DefaultMaterial.NoLighting
cullMode: Material.NoCulling
}
}