// 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 } } } }