aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick3d/particles3d/StartupView.qml
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@qt.io>2023-06-08 16:25:47 +0200
committerAndy Nichols <nezticle@gmail.com>2023-06-12 16:05:36 +0200
commitf7cc7656e2bd01851c5fb04747b0c8439ffa9dbe (patch)
tree3999f4a6efc61e1841e21941fd6bf8a51025d121 /examples/quick3d/particles3d/StartupView.qml
parent16c734c0a26b5fed0542f3ef2fee07be74a45da8 (diff)
Fix qmllint errors in particles3d example
Pick-to: 6.6 Change-Id: I10126755f2a42fb365219f09b9c54e45ed8e4316 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'examples/quick3d/particles3d/StartupView.qml')
-rw-r--r--examples/quick3d/particles3d/StartupView.qml293
1 files changed, 293 insertions, 0 deletions
diff --git a/examples/quick3d/particles3d/StartupView.qml b/examples/quick3d/particles3d/StartupView.qml
new file mode 100644
index 00000000..6e3097c1
--- /dev/null
+++ b/examples/quick3d/particles3d/StartupView.qml
@@ -0,0 +1,293 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick3D
+import QtQuick3D.Particles3D
+import QtQuick.Controls
+
+Item {
+ id: mainView
+
+ required property Loader loader
+
+ readonly property real listItemWidth: 180
+ readonly property real listItemHeight: 40
+ // Enable this when only want to list the demos
+ // Tweak the demos list as needed
+ readonly property bool showOnlyDemos: false
+
+ anchors.fill: parent
+
+ ListModel {
+ id: demosModel
+ ListElement {
+ name: "Snowing"
+ file: "Snowing.qml"
+ }
+ ListElement {
+ name: "Line Particles"
+ file: "LineParticles.qml"
+ }
+ ListElement {
+ name: "HeartTrail"
+ file: "HeartTrail.qml"
+ }
+ ListElement {
+ name: "Giant Ocean Spider"
+ file: "OceanSpider.qml"
+ }
+ ListElement {
+ name: "Qt Cube Burst"
+ file: "QtLogoAnimation.qml"
+ }
+ ListElement {
+ name: "Fire And Smoke"
+ file: "Fire.qml"
+ }
+ ListElement {
+ name: "Speedometer"
+ file: "Speedometer.qml"
+ }
+ ListElement {
+ name: "Sorting"
+ file: "Sorting.qml"
+ }
+ ListElement {
+ name: "Model-Blend Particles"
+ file: "ModelBlendParticles.qml"
+ }
+ ListElement {
+ name: "Lights"
+ file: "Lights.qml"
+ }
+ ListElement {
+ name: "Dynamic Bursts"
+ file: "DynamicBursts.qml"
+ }
+ }
+
+ ListModel {
+ id: testsModel
+ ListElement {
+ name: "Colorful Particles"
+ file: "ColorfulParticles.qml"
+ }
+ ListElement {
+ name: "Emitter Shapes"
+ file: "EmitterShapes.qml"
+ }
+ ListElement {
+ name: "Emitter Custom Shapes"
+ file: "EmitterCustomShapes.qml"
+ }
+ ListElement {
+ name: "Attractor Shapes"
+ file: "AttractorShapes.qml"
+ }
+ ListElement {
+ name: "Fading In/Out"
+ file: "FadingInOut.qml"
+ }
+ ListElement {
+ name: "Emit And Burst"
+ file: "EmitAndBurst.qml"
+ }
+ ListElement {
+ name: "ParticleSystem"
+ file: "SystemPlayPause.qml"
+ }
+ ListElement {
+ name: "Aligned Particles"
+ file: "AlignedParticles.qml"
+ }
+ ListElement {
+ name: "TrailEmitter Burst"
+ file: "TrailEmitterBurst.qml"
+ }
+ ListElement {
+ name: "Animated Sprite"
+ file: "AnimatedSprite.qml"
+ }
+ ListElement {
+ name: "Model Shape"
+ file: "ModelShape.qml"
+ }
+ }
+
+ View3D {
+ anchors.fill: parent
+
+ environment: SceneEnvironment {
+ clearColor: "#000000"
+ backgroundMode: SceneEnvironment.Color
+ antialiasingMode: AppSettings.antialiasingMode
+ antialiasingQuality: AppSettings.antialiasingQuality
+ }
+
+ PerspectiveCamera {
+ position: Qt.vector3d(0, 0, 600)
+ clipFar: 2000
+ }
+
+ PointLight {
+ id: pointLight
+ position: Qt.vector3d(200, 200, 400)
+ brightness: 50
+ ambientColor: Qt.rgba(0.5, 0.3, 0.1, 1.0)
+ SequentialAnimation {
+ loops: Animation.Infinite
+ NumberAnimation {
+ target: pointLight
+ property: "brightness"
+ to: 400
+ duration: 2000
+ easing.type: Easing.OutElastic
+ }
+ NumberAnimation {
+ target: pointLight
+ property: "brightness"
+ to: 50
+ duration: 6000
+ easing.type: Easing.InOutQuad
+ }
+ }
+ }
+
+ // Qt Cube model
+ Model {
+ source: "#Cube"
+ position: Qt.vector3d(-250, 150, 100)
+ scale: Qt.vector3d(1.0, 1.0, 1.0)
+ NumberAnimation on eulerRotation.y {
+ loops: Animation.Infinite
+ from: 0
+ to: 360
+ duration: 10000
+ }
+ NumberAnimation on eulerRotation.x {
+ loops: Animation.Infinite
+ from: 0
+ to: 360
+ duration: 6000
+ }
+ materials: PrincipledMaterial {
+ baseColorMap: Texture {
+ source: "images/qt_logo2.png"
+ }
+ normalMap: Texture {
+ source: "images/qt_logo2_n.png"
+ }
+ }
+ }
+
+ ParticleSystem3D {
+ id: psystem
+ startTime: 10000
+ SpriteParticle3D {
+ id: spriteParticle
+ sprite: Texture {
+ source: "images/dot.png"
+ }
+ maxAmount: 200
+ color: "#80ff7000"
+ colorVariation: Qt.vector4d(0.6, 0.2, 0.0, 0.4)
+ unifiedColorVariation: true
+ fadeInDuration: 1000
+ fadeOutDuration: 3000
+ }
+ ParticleEmitter3D {
+ particle: spriteParticle
+ emitRate: 20
+ lifeSpan: 10000
+ scale: Qt.vector3d(8, 8, 0)
+ shape: ParticleShape3D {
+ type: ParticleShape3D.Cube
+ }
+ particleScale: 2.4
+ particleScaleVariation: 1.8
+ particleEndScale: 0.2
+ velocity: TargetDirection3D {
+ magnitudeVariation: magnitude
+ positionVariation: Qt.vector3d(180, 180, 180)
+ SequentialAnimation on magnitude {
+ loops: Animation.Infinite
+ NumberAnimation {
+ to: 1.0
+ duration: 3000
+ easing.type: Easing.InOutQuad
+ }
+ NumberAnimation {
+ to: 0.1
+ duration: 5000
+ easing.type: Easing.InOutQuad
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Component {
+ id: listComponent
+ Button {
+ id: button
+ required property string name
+ required property string file
+
+ width: mainView.listItemWidth
+ height: mainView.listItemHeight
+ background: Rectangle {
+ id: buttonBackground
+ border.width: 0.5
+ border.color: "#d0808080"
+ color: "#d0404040"
+ opacity: button.hovered ? 1.0 : 0.5
+ }
+ contentItem: Text {
+ anchors.centerIn: parent
+ color: "#f0f0f0"
+ font.pointSize: AppSettings.fontSizeSmall
+ text: button.name
+ }
+
+ onClicked: {
+ mainView.loader.source = button.file
+ }
+ }
+ }
+
+ Text {
+ id: topLabel
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: 20
+ text: qsTr("Qt Quick 3D - Particles3D")
+ color: "#f0f0f0"
+ font.pointSize: AppSettings.fontSizeLarge
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: topLabel.bottom
+ anchors.topMargin: 20
+ spacing: 20
+ ListView {
+ id: demosListView
+ width: mainView.listItemWidth
+ height: count * mainView.listItemHeight
+ model: demosModel
+ delegate: listComponent
+ }
+ ListView {
+ id: examplesListView
+ visible: !mainView.showOnlyDemos
+ width: mainView.listItemWidth
+ height: count * mainView.listItemHeight
+ model: testsModel
+ delegate: listComponent
+ }
+ }
+}