Revision control
++ // 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 {}
++ }
++ }
++ }