Revision control

++ // Copyright (C) 2024 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ import QtQuick
++ import QtQuick3D.Particles3D
++
++ ParticleEmitter3D {
++ id: root
++ property real timeVariance: 0.0
++ property real minTime: 0.0
++ property real amountVariance: 0
++ property alias running : fa.running
++ property vector3d positionVariance: Qt.vector3d(0, 0, 0)
++
++ onTimeVarianceChanged: initRandomEmitter()
++ onMinTimeChanged: initRandomEmitter()
++
++ QtObject {
++ id: vars
++ property int curTicks: 0
++ property int burstTicks: 0
++ property int amount: 0
++ property vector3d position
++ }
++ function initRandomEmitter()
++ {
++ var burstTime = Math.random() * timeVariance + minTime
++ vars.burstTicks = burstTime / 16
++ vars.curTicks = 0
++ vars.amount = 1 + Math.random() * amountVariance
++ vars.position = Qt.vector3d(Math.random() * positionVariance.x, Math.random() * positionVariance.y, Math.random() * positionVariance.z)
++ }
++
++ FrameAnimation {
++ id: fa
++ onTriggered: {
++ vars.curTicks++
++ if (vars.curTicks > vars.burstTicks) {
++ root.burst(vars.amount, 0, vars.position)
++ root.initRandomEmitter()
++ }
++ }
++ }
++ }