Fix tray visibility and message reception issues
- 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
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 288 B |
|
After Width: | Height: | Size: 371 B |
|
After Width: | Height: | Size: 586 B |
|
After Width: | Height: | Size: 375 B |
|
After Width: | Height: | Size: 253 B |
|
After Width: | Height: | Size: 499 B |
|
After Width: | Height: | Size: 381 B |
|
After Width: | Height: | Size: 650 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 318 B |
|
After Width: | Height: | Size: 675 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 328 B |
|
After Width: | Height: | Size: 448 B |
|
After Width: | Height: | Size: 873 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 923 B |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 384 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 448 B |
|
After Width: | Height: | Size: 811 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 496 B |
|
After Width: | Height: | Size: 997 B |
|
After Width: | Height: | Size: 364 B |
|
After Width: | Height: | Size: 911 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 331 B |
|
After Width: | Height: | Size: 719 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 334 B |
|
After Width: | Height: | Size: 811 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 421 B |
|
After Width: | Height: | Size: 600 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 758 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 795 B |
|
After Width: | Height: | Size: 795 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 393 B |
|
After Width: | Height: | Size: 774 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 299 B |
|
After Width: | Height: | Size: 389 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 253 B |