Fix tray visibility and message reception issues
Some checks failed
build / build-pip (push) Failing after 16s
build / build-win64 (push) Has been cancelled
build / build-macos (push) Has been cancelled

- Disable sound initialization to prevent hanging
- Add missing import re in utils.py
- Fix settings loading for QSettings
- Update file paths to use PROJECT_ROOT
- Revert to working API paths and listener from commit efdc63e
This commit is contained in:
kdusek
2025-12-07 22:39:07 +01:00
parent 7b695d7b7f
commit 5138303016
4060 changed files with 579123 additions and 23 deletions

View File

@@ -0,0 +1,69 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Affector")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("System")
tooltip: qsTr("Sets the ParticleSystem3D for the affector. If system is direct parent of the affector, this property does not need to be defined.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Particles3D.ParticleSystem3D"
backendValue: backendValues.system
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Particles")
tooltip: qsTr("Sets which logical particles will be affected. When empty, all particles in the system are affected.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.particles
model: backendValues.particles.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Particles3D.Particle3D"
onAdd: function(value) { backendValues.particles.idListAdd(value) }
onRemove: function(idx) { backendValues.particles.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.particles.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("If set to false, this affector will not alter any particles. Usually this is used to conditionally turn an affector on or off.")
}
SecondColumnLayout {
CheckBox {
id: enabledCheckBox
text: backendValues.enabled.valueToString
backendValue: backendValues.enabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
Affector3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,183 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Attractor")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Position Variation")
tooltip: qsTr("Sets the variation on attract position.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.positionVariation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.positionVariation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.positionVariation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Shape")
tooltip: qsTr("Sets a ParticleAbstractShape3D for particles attraction.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QQuick3DParticleAbstractShape"
backendValue: backendValues.shape
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Duration")
tooltip: qsTr("Sets the duration in milliseconds how long it takes for particles to reach the attaction position.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -1
maximumValue: 999999
decimals: 0
backendValue: backendValues.duration
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Duration Variation")
tooltip: qsTr("Sets the duration variation in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.durationVariation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Hide At End")
tooltip: qsTr("Sets if the particle should disappear when it reaches the attractor.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.hideAtEnd.valueToString
backendValue: backendValues.hideAtEnd
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Use Cached Positions")
tooltip: qsTr("Sets if the attractor caches possible positions within its shape. Cached positions give less random results but are better for performance.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.useCachedPositions.valueToString
backendValue: backendValues.useCachedPositions
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Positions Amount")
tooltip: qsTr("Sets the amount of possible positions stored within the attractor shape.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.positionsAmount
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}

View File

@@ -0,0 +1,22 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
Attractor3DSection {
width: parent.width
}
Affector3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,66 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Dynamic Burst")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Trigger Mode")
tooltip: qsTr("Sets the triggering mode used for emitting the particles.")
}
SecondColumnLayout {
ComboBox {
scope: "DynamicBurst3D"
model: ["TriggerTime", "TriggerStart", "TriggerEnd"]
backendValue: backendValues.triggerMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Amount Variation")
tooltip: qsTr("Sets the random variation in particle emit amount.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.amountVariation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("If set to false, this burst will not emit any particles. Usually this is used to conditionally turn a burst on or off.")
}
SecondColumnLayout {
CheckBox {
id: enabledCheckBox
text: backendValues.enabled.valueToString
backendValue: backendValues.enabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
DynamicBurst3DSection {
width: parent.width
}
EmitBurst3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,68 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Emit Burst")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Time")
tooltip: qsTr("Sets the time in milliseconds when emitting the burst starts.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.time
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Amount")
tooltip: qsTr("Sets the amount of particles emitted during the burst.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.amount
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Duration")
tooltip: qsTr("Sets the duration of the burst.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.duration
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
EmitBurst3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,101 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import HelperWidgets 2.0
import QtQuick.Layouts 1.15
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Gravity")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Magnitude")
tooltip: qsTr("Sets the magnitude in position change per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.magnitude
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Direction")
tooltip: qsTr("Sets the direction the gravity will affect toward.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
Gravity3DSection {
width: parent.width
}
Affector3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,176 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Line Particle")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Segments")
tooltip: qsTr("Sets the segment count of the line.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 1
maximumValue: 999999
decimals: 0
backendValue: backendValues.segmentCount
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Alpha Fade")
tooltip: qsTr("Sets the line fade amount per segment.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 1.0
stepSize: 0.01
decimals: 2
backendValue: backendValues.alphaFade
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Scale Multiplier")
tooltip: qsTr("Sets the scale multiplier per segment.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 2.0
decimals: 2
stepSize: 0.01
backendValue: backendValues.scaleMultiplier
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Texcoord Multiplier")
tooltip: qsTr("Sets the texture coordinate multiplier of the line.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -99999.0
maximumValue: 99999.0
decimals: 2
backendValue: backendValues.texcoordMultiplier
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Texcoord Mode")
tooltip: qsTr("Sets the texture coordinate mode of the line.")
}
SecondColumnLayout {
ComboBox {
scope: "LineParticle3D"
model: ["Absolute", "Relative", "Fill"]
backendValue: backendValues.texcoordMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Line Length")
tooltip: qsTr("Sets the length of the line.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 99999.0
decimals: 2
backendValue: backendValues.length
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Line Length Variation")
tooltip: qsTr("Sets the length variation of the line.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 99999.0
decimals: 2
backendValue: backendValues.lengthVariation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Min Segment Length")
tooltip: qsTr("Sets the minimum length between line segments.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 99999.0
decimals: 2
backendValue: backendValues.lengthDeltaMin
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("EOL Fade Out")
tooltip: qsTr("Sets the fade out duration after the end of particle lifetime.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.0
maximumValue: 99999.0
decimals: 2
backendValue: backendValues.eolFadeOutDuration
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,22 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
LineParticle3DSection {
width: parent.width
}
SpriteParticle3DSection {
width: parent.width
}
Particle3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,115 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Model Blend Particle")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Delegate")
tooltip: qsTr("The delegate provides a template defining the model for the ModelBlendParticle3D.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "Component"
backendValue: backendValues.delegate
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("End Node")
tooltip: qsTr("Sets the node that specifies the transformation for the model at the end of particle effect.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.endNode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Model Blend Mode")
tooltip: qsTr("Sets blending mode for the particle effect.")
}
SecondColumnLayout {
ComboBox {
scope: "ModelBlendParticle3D"
model: ["Explode", "Construct", "Transfer"]
backendValue: backendValues.modelBlendMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("End Time")
tooltip: qsTr("Sets the end time of the particle in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.endTime
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Activation Node")
tooltip: qsTr("Sets a node that activates particles.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.activationNode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Emit Mode")
tooltip: qsTr("Sets emit mode of the particles.")
}
SecondColumnLayout {
ComboBox {
id: randomCheckBox
model: ["Sequential", "Random", "Activation"]
backendValue: backendValues.emitMode
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ModelBlendParticle3DSection {
width: parent.width
}
Particle3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,30 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Model Particle")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Delegate")
tooltip: qsTr("The delegate provides a template defining each object instantiated by the particle.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "Component"
backendValue: backendValues.delegate
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ModelParticle3DSection {
width: parent.width
}
Particle3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,350 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Column {
width: parent.width
Section {
width: parent.width
caption: qsTr("Node")
SectionLayout {
PropertyLabel {
text: qsTr("Opacity")
tooltip: qsTr("Sets the local opacity value of the node.")
}
SecondColumnLayout {
// ### should be a slider
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.1
backendValue: backendValues.opacity
sliderIndicatorVisible: true
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Visibility")
tooltip: qsTr("Sets the local visibility of the node.")
}
SecondColumnLayout {
// ### should be a slider
CheckBox {
text: qsTr("Is Visible")
backendValue: backendValues.visible
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
id: transformSection
width: parent.width
caption: qsTr("Transform")
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Translation")
tooltip: qsTr("Sets the translation of the node.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Rotation")
tooltip: qsTr("Sets the rotation of the node in degrees.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.eulerRotation_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Scale")
tooltip: qsTr("Sets the scale of the node.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.scale_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Pivot")
tooltip: qsTr("Sets the pivot of the node.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivot_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivot_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivot_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,343 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Max Amount")
tooltip: qsTr("Sets the maximum amount of particles that can exist at the same time.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.maxAmount
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Color")
tooltip: qsTr("Sets the base color that is used for colorizing the particles.")
}
ColorEditor {
backendValue: backendValues.color
supportGradient: false
}
PropertyLabel {
text: qsTr("Color Variation")
tooltip: qsTr("Sets the color variation that is used for colorizing the particles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.colorVariation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.colorVariation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.colorVariation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.colorVariation_w
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "W"
color: StudioTheme.Values.themeTextColor // TODO theme3DAxisWColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Unified Color Variation")
tooltip: qsTr("Sets if the colorVariation should be applied uniformly for all the color channels.")
}
SecondColumnLayout {
CheckBox {
id: unifiedColorVariationCheckBox
text: backendValues.unifiedColorVariation.valueToString
backendValue: backendValues.unifiedColorVariation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fade In Effect")
tooltip: qsTr("Sets the fading effect used when the particles appear.")
}
SecondColumnLayout {
ComboBox {
scope: "Particle3D"
model: ["FadeNone", "FadeOpacity", "FadeScale"]
backendValue: backendValues.fadeInEffect
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fade Out Effect")
tooltip: qsTr("Sets the fading effect used when the particles reach their lifeSpan and disappear.")
}
SecondColumnLayout {
ComboBox {
scope: "Particle3D"
model: ["FadeNone", "FadeOpacity", "FadeScale"]
backendValue: backendValues.fadeOutEffect
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fade In Duration")
tooltip: qsTr("Sets the duration in milliseconds for the fading in effect.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.fadeInDuration
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fade Out Duration")
tooltip: qsTr("Sets the duration in milliseconds for the fading out effect.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.fadeOutDuration
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Align Mode")
tooltip: qsTr("Sets the align mode used for the particles. Particle alignment means the direction that particles face.")
}
SecondColumnLayout {
ComboBox {
scope: "Particle3D"
model: ["AlignNone", "AlignTowardsTarget", "AlignTowardsStartVelocity"]
backendValue: backendValues.alignMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Align Target Position")
tooltip: qsTr("Sets the position particles are aligned to. This property has effect only when the alignMode is set to Particle3D.AlignTowardsTarget.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.alignTargetPosition_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.alignTargetPosition_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.alignTargetPosition_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Has Transparency")
tooltip: qsTr("Sets if the particle has any transparency and should be blended with the background.")
}
SecondColumnLayout {
CheckBox {
id: hasTransparencyCheckBox
text: backendValues.hasTransparency.valueToString
backendValue: backendValues.hasTransparency
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Sort Mode")
tooltip: qsTr("Sets the sort mode used for the particles.")
}
SecondColumnLayout {
ComboBox {
scope: "Particle3D"
model: ["SortNone", "SortNewest", "SortOldest", "SortDistance"]
backendValue: backendValues.sortMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
Particle3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,45 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Custom Shape")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Randomize Data")
tooltip: qsTr("Sets whether the particles are used in random order instead of in the order they are specified in the source.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.castsShadows.valueToString
backendValue: backendValues.castsShadows
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Source")
tooltip: qsTr("Sets the location of the shape file.")
}
SecondColumnLayout {
UrlChooser {
id: sourceUrlChooser
backendValue: backendValues.source
filter: "*.cbor"
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ParticleCustomShape3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,557 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Column {
width: parent.width
Section {
caption: qsTr("Particle Emitter")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("System")
tooltip: qsTr("Sets the ParticleSystem3D for the emitter. If system is direct parent of the emitter, this property does not need to be defined.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Particles3D.ParticleSystem3D"
backendValue: backendValues.system
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Emit Bursts")
tooltip: qsTr("Sets a list of EmitBurst3D elements to declaratively define bursts.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.emitBursts
model: backendValues.emitBursts.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Particles3D.EmitBurst3D"
onAdd: function(value) { backendValues.emitBursts.idListAdd(value) }
onRemove: function(idx) { backendValues.emitBursts.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.emitBursts.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Velocity")
tooltip: qsTr("Sets a starting velocity for emitted particles.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QQuick3DParticleDirection"
backendValue: backendValues.velocity
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Particle")
tooltip: qsTr("Sets the logical particle which this emitter emits.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Particles3D.Particle3D"
backendValue: backendValues.particle
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Enabled")
tooltip: qsTr("If enabled is set to false, this emitter will not emit any particles.")
}
SecondColumnLayout {
CheckBox {
id: enabledCheckBox
text: backendValues.enabled.valueToString
backendValue: backendValues.enabled
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Shape")
tooltip: qsTr("Sets optional shape for the emitting area.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QQuick3DParticleAbstractShape"
backendValue: backendValues.shape
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Emit Rate")
tooltip: qsTr("Sets the constant emitting rate in particles per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.emitRate
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Life Span")
tooltip: qsTr("Sets the lifespan of a single particle in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.lifeSpan
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Life Span Variation")
tooltip: qsTr("Sets the lifespan variation of a single particle in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 0
backendValue: backendValues.lifeSpanVariation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Particle Scale")
tooltip: qsTr("Sets the scale multiplier of the particles at the beginning")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.particleScale
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Particle End Scale")
tooltip: qsTr("Sets the scale multiplier of the particles at the end of particle lifeSpan.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.particleEndScale
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Scale Variation")
tooltip: qsTr("Sets the scale variation of the particles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.particleScaleVariation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("End Scale Variation")
tooltip: qsTr("Sets the scale variation of the particles in the end.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.particleEndScaleVariation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Depth Bias")
tooltip: qsTr("Sets the depth bias of the emitter. Depth bias is added to the object distance from camera when sorting objects.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.depthBias
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
width: parent.width
caption: qsTr("Particle Rotation")
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Rotation")
tooltip: qsTr("Sets the rotation of the particles in the beginning. Rotation is defined as degrees in euler angles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Variation")
tooltip: qsTr("Sets the rotation variation of the particles in the beginning. Rotation variation is defined as degrees in euler angles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVariation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVariation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVariation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Velocity")
tooltip: qsTr("Sets the rotation velocity of the particles in the beginning. Rotation velocity is defined as degrees per second in euler angles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVelocity_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVelocity_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVelocity_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Velocity Variation")
tooltip: qsTr("Sets the rotation velocity variation of the particles. Rotation velocity variation is defined as degrees per second in euler angles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVelocityVariation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVelocityVariation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.particleRotationVelocityVariation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ParticleEmitter3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,47 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Model Shape")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Fill")
tooltip: qsTr("Sets if the shape should be filled or just use the shape outlines.")
}
SecondColumnLayout {
CheckBox {
id: fillCheckBox
text: backendValues.fill.valueToString
backendValue: backendValues.fill
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Delegate")
tooltip: qsTr("The delegate provides a template defining the model for the ParticleModelShape3D.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "Component"
backendValue: backendValues.delegate
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ParticleModelShape3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,117 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Shape")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Fill")
tooltip: qsTr("Sets if the shape should be filled or just use the shape outlines.")
}
SecondColumnLayout {
CheckBox {
id: fillCheckBox
text: backendValues.fill.valueToString
backendValue: backendValues.fill
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Type")
tooltip: qsTr("Sets the type of the shape.")
}
SecondColumnLayout {
ComboBox {
scope: "ParticleShape3D"
model: ["Cube", "Sphere", "Cylinder"]
backendValue: backendValues.type
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Extents")
tooltip: qsTr("Sets the extents of the shape.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.extents_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.extents_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.extents_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ParticleShape3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,136 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle System")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Start Time")
tooltip: qsTr("Sets the time in milliseconds where the system starts.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 2147483647
decimals: 0
backendValue: backendValues.startTime
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Time")
tooltip: qsTr("Sets the time in milliseconds for the system.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 2147483647
decimals: 0
backendValue: backendValues.time
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Running")
tooltip: qsTr("Sets if system is currently running.")
}
SecondColumnLayout {
CheckBox {
id: runningCheckBox
text: backendValues.running.valueToString
backendValue: backendValues.running
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Paused")
tooltip: qsTr("Sets if system is currently paused.")
}
SecondColumnLayout {
CheckBox {
id: pausedCheckBox
text: backendValues.paused.valueToString
backendValue: backendValues.paused
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Logging")
tooltip: qsTr("Enables collection of loggingData.")
}
SecondColumnLayout {
CheckBox {
id: loggingCheckBox
text: backendValues.logging.valueToString
backendValue: backendValues.logging
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Use Random Seed")
tooltip: qsTr("Sets if particle system seed should be random or user defined.")
}
SecondColumnLayout {
CheckBox {
id: useRandomSeedCheckBox
text: backendValues.useRandomSeed.valueToString
backendValue: backendValues.useRandomSeed
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Seed")
tooltip: qsTr("Sets the seed value used for particles randomization.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 2147483647
decimals: 0
backendValue: backendValues.seed
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ParticleSystem3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,170 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Point Rotator")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Magnitude")
tooltip: qsTr("Sets the magnitude in degrees per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.magnitude
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Direction")
tooltip: qsTr("Sets the direction for the rotation. Values will be automatically normalized to a unit vector.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Pivot Point")
tooltip: qsTr("Sets the pivot point for the rotation. Particles are rotated around this point.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivotPoint_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivotPoint_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.pivotPoint_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
PointRotator3DSection {
width: parent.width
}
Affector3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,68 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Repeller")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Radius")
tooltip: qsTr("Sets the radius of the effect.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.radius
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Outer Radius")
tooltip: qsTr("Sets the outer radius of the effect.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.outerRadius
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Strength")
tooltip: qsTr("Sets the strength of the effect.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.strength
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,22 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
Repeller3DSection {
width: parent.width
}
Affector3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,106 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Scale Affector")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Scaling Type")
tooltip: qsTr("Sets the scaling type of the affector.")
}
SecondColumnLayout {
ComboBox {
scope: "ScaleAffector3D"
model: ["Linear", "SewSaw", "SineWave", "AbsSineWave", "Step", "SmoothStep"]
backendValue: backendValues.type
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Minimum Size")
tooltip: qsTr("Sets the minimum scale size.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.minSize
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Maximum Size")
tooltip: qsTr("Sets the maximum scale size.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 2
backendValue: backendValues.maxSize
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Duration")
tooltip: qsTr("Sets the duration of scaling period.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
stepSize: 10
backendValue: backendValues.duration
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Easing curve")
tooltip: qsTr("Sets a custom scaling curve.")
}
SecondColumnLayout {
BoolButtonRowButton {
buttonIcon: StudioTheme.Constants.curveDesigner
EasingCurveEditor {
id: easingCurveEditor
modelNodeBackendProperty: modelNodeBackend
}
onClicked: easingCurveEditor.runDialog()
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,22 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
ScaleAffector3DSection {
width: parent.width
}
Affector3DSection {
width: parent.width
}
NodeSection {
width: parent.width
}
}

View File

@@ -0,0 +1,195 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Sprite Particle")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Blend Mode")
tooltip: qsTr("Sets the blending mode used for rendering the particles.")
}
SecondColumnLayout {
ComboBox {
scope: "SpriteParticle3D"
model: ["SourceOver", "Screen", "Multiply"]
backendValue: backendValues.blendMode
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Casts Reflections")
tooltip: qsTr("Enables reflection probes to reflect sprite particles.")
}
SecondColumnLayout {
CheckBox {
id: castsReflectionsCheckBox
text: backendValues.castsReflections.valueToString
backendValue: backendValues.castsReflections
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Sprite")
tooltip: qsTr("Sets the Texture used for the particles.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.sprite
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Sprite Sequence")
tooltip: qsTr("Sets the sprite sequence properties for the particle.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Particles3D.SpriteSequence3D"
backendValue: backendValues.spriteSequence
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Billboard")
tooltip: qsTr("Sets if the particle texture should always be aligned face towards the screen.")
}
SecondColumnLayout {
CheckBox {
id: billboardCheckBox
text: backendValues.billboard.valueToString
backendValue: backendValues.billboard
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Particle Scale")
tooltip: qsTr("Sets the scale multiplier of the particles.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.particleScale
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Color Table")
tooltip: qsTr("Sets the Texture used for coloring the particles.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Texture"
backendValue: backendValues.colorTable
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Lights")
tooltip: qsTr("Sets the lights used for the particles.")
Layout.alignment: Qt.AlignTop
Layout.topMargin: 5
}
SecondColumnLayout {
EditableListView {
backendValue: backendValues.lights
model: backendValues.lights.expressionAsList
Layout.fillWidth: true
typeFilter: "QtQuick3D.Light"
onAdd: function(value) { backendValues.lights.idListAdd(value) }
onRemove: function(idx) { backendValues.lights.idListRemove(idx) }
onReplace: function (idx, value) { backendValues.lights.idListReplace(idx, value) }
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Offset")
}
SecondColumnLayout {
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 2
stepSize: 0.1
backendValue: backendValues.offsetX
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
tooltip: qsTr("Offsets the X coordinate.")
}
Spacer { implicitWidth: StudioTheme.Values.controlGap }
SpinBox {
maximumValue: 999999
minimumValue: -999999
decimals: 2
stepSize: 0.1
backendValue: backendValues.offsetY
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
tooltip: qsTr("Offsets the Y coordinate.")
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
SpriteParticle3DSection {
width: parent.width
}
Particle3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,136 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Sprite Sequence")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Frame Count")
tooltip: qsTr("Sets the amount of image frames in sprite.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.frameCount
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Frame Index")
tooltip: qsTr("Sets the initial index of the frame.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.frameIndex
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Interpolate")
tooltip: qsTr("Sets if the sprites are interpolated (blended) between frames to make the animation appear smoother.")
}
SecondColumnLayout {
CheckBox {
id: interpolateCheckBox
text: backendValues.interpolate.valueToString
backendValue: backendValues.interpolate
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Duration")
tooltip: qsTr("Sets the duration in milliseconds how long it takes for the sprite sequence to animate.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -1
maximumValue: 999999
decimals: 0
backendValue: backendValues.duration
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Duration Variation")
tooltip: qsTr("Sets the duration variation in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 0
backendValue: backendValues.durationVariation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Random Start")
tooltip: qsTr("Sets if the animation should start from a random frame between 0 and frameCount - 1.")
}
SecondColumnLayout {
CheckBox {
id: randomStartCheckBox
text: backendValues.randomStart.valueToString
backendValue: backendValues.randomStart
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Animation Direction")
tooltip: qsTr("Sets the animation direction of the sequence.")
}
SecondColumnLayout {
ComboBox {
scope: "SpriteSequence3D"
model: ["Normal", "Reverse", "Alternate", "AlternateReverse", "SingleFrame"]
backendValue: backendValues.animationDirection
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
SpriteSequence3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,201 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Target Direction")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Position")
tooltip: qsTr("Sets the position for particles target.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.position_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.position_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.position_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Position Variation")
tooltip: qsTr("Sets the position variation for particles target.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.positionVariation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.positionVariation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.positionVariation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Normalized")
tooltip: qsTr("Sets if the distance to position should be considered as normalized or not.")
}
SecondColumnLayout {
CheckBox {
id: normalizedCheckBox
text: backendValues.normalized.valueToString
backendValue: backendValues.normalized
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Magnitude")
tooltip: qsTr("This property defines the magnitude in position change per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.magnitude
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
PropertyLabel {
text: qsTr("Magnitude Variation")
tooltip: qsTr("Sets the magnitude variation in position change per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -999999
maximumValue: 999999
decimals: 2
backendValue: backendValues.magnitudeVariation
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
TargetDirection3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,30 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Trail Emitter")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Follow")
tooltip: qsTr("Sets the logical particle which this emitter follows.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Particles3D.Particle3D"
backendValue: backendValues.follow
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
TrailEmitter3DSection {
width: parent.width
}
ParticleEmitter3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,169 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Particle Vector Direction")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Direction")
tooltip: qsTr("Sets the direction for particles target.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.direction_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Direction Variation")
tooltip: qsTr("Sets the direction variation for particles target.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.directionVariation_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.directionVariation_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.directionVariation_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Normalized")
tooltip: qsTr("Sets if the direction should be normalized after applying the variation.")
}
SecondColumnLayout {
CheckBox {
id: normalizedCheckBox
text: backendValues.normalized.valueToString
backendValue: backendValues.normalized
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}

View File

@@ -0,0 +1,14 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
VectorDirection3DSection {
width: parent.width
}
}

View File

@@ -0,0 +1,474 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Column {
width: parent.width
Section {
caption: qsTr("Particle Wander")
width: parent.width
SectionLayout {
PropertyLabel {
text: qsTr("Fade In Duration")
tooltip: qsTr("Sets the duration in milliseconds for fading in the affector.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.fadeInDuration
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Fade Out Duration")
tooltip: qsTr("Sets the duration in milliseconds for fading out the affector.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 999999
decimals: 0
backendValue: backendValues.fadeOutDuration
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
Section {
width: parent.width
caption: qsTr("Global")
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Amount")
tooltip: qsTr("Sets how long distance each particle moves at the ends of curves.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.globalAmount_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.globalAmount_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.globalAmount_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Pace")
tooltip: qsTr("Sets the pace (frequency) each particle wanders in curves per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.globalPace_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.globalPace_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.globalPace_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Pace Start")
tooltip: qsTr("Sets the starting point for the pace (frequency).")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.globalPaceStart_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.globalPaceStart_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.globalPaceStart_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
}
}
}
Section {
width: parent.width
caption: qsTr("Unique")
ColumnLayout {
spacing: StudioTheme.Values.transform3DSectionSpacing
SectionLayout {
PropertyLabel {
text: qsTr("Amount")
tooltip: qsTr("Sets the unique distance each particle moves at the ends of curves.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.uniqueAmount_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.uniqueAmount_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.uniqueAmount_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Amount Variation")
tooltip: qsTr("Sets the variation for uniqueAmount between 0.0 and 1.0.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.uniqueAmountVariation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
SectionLayout {
PropertyLabel {
text: qsTr("Pace")
tooltip: qsTr("Sets the unique pace (frequency) each particle wanders in curves per second.")
}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.uniquePace_x
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.uniquePace_y
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {}
SecondColumnLayout {
SpinBox {
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
stepSize: 0.01
backendValue: backendValues.uniquePace_z
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
PropertyLabel {
text: qsTr("Pace Variation")
tooltip: qsTr("Sets the unique pace (frequency) variation for each particle between 0.0 and 1.0.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0
maximumValue: 1
decimals: 2
stepSize: 0.01
backendValue: backendValues.uniquePaceVariation
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}
}
}

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
Column {
width: parent.width
Wander3DSection {
width: parent.width
}
Affector3DSection {
width: parent.width
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 923 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 496 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Some files were not shown because too many files have changed in this diff Show More