aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick3d/orderindependenttransparency/RandomEmitter.qml
blob: c9d03baaadbffc4d009d1cc343e7bf45ef05e9f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 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()
            }
        }
    }
}