Revision control

Copy as Markdown

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