Qt Quick 3D - Particles 3D Testbed Example

// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick3D
import QtQuick3D.Particles3D
import QtQuick.Controls
Window {
    id: rootWindow
    readonly property url startupView: "StartupView.qml"
    QtObject {
        id: settings
        // Antialiasing mode & quality used in all examples.
        property var antialiasingMode: SceneEnvironment.NoAA
        property var antialiasingQuality: SceneEnvironment.High
        // Toggle default visibility of these views
        property bool showSettingsView: true
        property bool showLoggingView: false
        // Fonts in pointSizes
        // These are used mostly on examples in 3D side
        property real fontSizeLarge: 16
        // These are used mostly on settings
        property real fontSizeSmall: 10
    }
    readonly property real iconSize: 16 + Math.max(width, height) * 0.05
    width: 1280
    height: 720
    visible: true
    title: qsTr("Qt Quick 3D Particles3D Testbed")
    color: "#000000"
    Loader {
        id: loader
        anchors.fill: parent
        source: startupView
    }
    Button {
        id: backButton
        anchors.left: parent.left
        anchors.top: parent.top
        width: rootWindow.iconSize
        height: width
        opacity: loader.source !== startupView
        visible: opacity
        icon.source: "qrc:/qml/images/arrow_icon.png"
        icon.width: backButton.width * 0.3
        icon.height: backButton.height * 0.3
        icon.color: "transparent"
        background: Rectangle {
            color: "transparent"
        }
        onClicked: {
            loader.source = startupView;
        }
        Behavior on opacity {
            NumberAnimation {
                duration: 400
                easing.type: Easing.InOutQuad
            }
        }
    }
}