diff options
author | Andy Nichols <andy.nichols@qt.io> | 2023-06-08 16:25:47 +0200 |
---|---|---|
committer | Andy Nichols <nezticle@gmail.com> | 2023-06-12 16:05:36 +0200 |
commit | f7cc7656e2bd01851c5fb04747b0c8439ffa9dbe (patch) | |
tree | 3999f4a6efc61e1841e21941fd6bf8a51025d121 /examples/quick3d/particles3d/DynamicBursts.qml | |
parent | 16c734c0a26b5fed0542f3ef2fee07be74a45da8 (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/DynamicBursts.qml')
-rw-r--r-- | examples/quick3d/particles3d/DynamicBursts.qml | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/examples/quick3d/particles3d/DynamicBursts.qml b/examples/quick3d/particles3d/DynamicBursts.qml new file mode 100644 index 00000000..0a2c2a63 --- /dev/null +++ b/examples/quick3d/particles3d/DynamicBursts.qml @@ -0,0 +1,257 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick3D +import QtQuick3D.Particles3D + +Item { + id: mainWindow + + property int smokeAmount: 20 + property int explosionAmount: 100 + + anchors.fill: parent + + View3D { + id: view3D + anchors.fill: parent + camera: camera + + environment: SceneEnvironment { + clearColor: "#000000" + backgroundMode: SceneEnvironment.Color + antialiasingMode: AppSettings.antialiasingMode + antialiasingQuality: AppSettings.antialiasingQuality + } + + PerspectiveCamera { + id: camera + position: Qt.vector3d(0, 100, 600) + } + + PointLight { + id: light1 + position: Qt.vector3d(0, 400, 100) + brightness: 5 + ambientColor: Qt.rgba(0.4, 0.3, 0.3, 1.0) + } + + ParticleSystem3D { + id: psystem + + SpriteParticle3D { + id: spriteParticle + sprite: Texture { + source: "images/sphere.png" + } + maxAmount: 3 + color: "#ffff80" + colorTable: Texture { + source: "images/color_table5.png" + } + particleScale: 40.0 + fadeInEffect: SpriteParticle3D.FadeNone + fadeOutEffect: SpriteParticle3D.FadeNone + } + SpriteParticle3D { + id: spriteTrailParticle + sprite: Texture { + source: "images/sphere.png" + } + maxAmount: 1000 + fadeInDuration: 500 + fadeOutDuration: 500 + fadeInEffect: SpriteParticle3D.FadeScale + fadeOutEffect: SpriteParticle3D.FadeScale + particleScale: 10.0 + colorTable: Texture { + source: "images/color_table3.png" + } + lights: [ light1 ] + } + SpriteParticle3D { + id: explosionParticle + sprite: Texture { + source: "images/star3.png" + } + maxAmount: 1000 + fadeInEffect: SpriteParticle3D.FadeScale + fadeInDuration: 100 + fadeOutDuration: 500 + particleScale: 10.0 + colorTable: Texture { + source: "images/color_table3.png" + } + lights: [ light1 ] + } + SpriteParticle3D { + id: smokeParticle + sprite: Texture { + source: "images/explosion_01_strip13.png" + } + maxAmount: 1000 + spriteSequence: SpriteSequence3D { + frameCount: 13 + interpolate: true + } + billboard: true + color: "#2fffffff" + colorVariation: Qt.vector4d(0.5, 0.5, 0.5, 0.1) + unifiedColorVariation: true + fadeOutEffect: Particle3D.FadeOpacity + fadeOutDuration: 2000 + lights: [ light1 ] + } + + ParticleEmitter3D { + particle: spriteParticle + position: Qt.vector3d(0, -100, 0) + scale: Qt.vector3d(1, 1, 1) + shape: ParticleShape3D { + type: ParticleShape3D.Cube + } + particleScaleVariation: 0.2 + particleEndScale: 1.5 + particleEndScaleVariation: 0.5 + velocity: VectorDirection3D { + direction: Qt.vector3d(0, 400, 0) + directionVariation: Qt.vector3d(40, 40, 0) + } + emitRate: 1 + lifeSpan: 2500 + lifeSpanVariation: 500 + depthBias: -10 + } + + TrailEmitter3D { + id: spriteTrailEmitter + particle: spriteTrailParticle + follow: spriteParticle + particleScale: 2.0 + particleScaleVariation: 0.5 + velocity: VectorDirection3D { + direction: Qt.vector3d(0, -10, 0) + directionVariation: Qt.vector3d(2, 2, 0) + } + emitRate: 100 + lifeSpan: 2000 + lifeSpanVariation: 500 + } + + TrailEmitter3D { + id: spriteSmokeTrailEmitter + particle: smokeParticle + follow: spriteParticle + particleScale: 8 + particleScaleVariation: 4 + particleEndScale: 45 + particleEndScaleVariation: 15 + particleRotationVariation: Qt.vector3d(0, 0, 180) + particleRotationVelocityVariation: Qt.vector3d(0, 0, 40) + emitRate: 0 + lifeSpan: 3000 + lifeSpanVariation: 1000 + velocity: VectorDirection3D { + direction: Qt.vector3d(0, 0, 0) + directionVariation: Qt.vector3d(mainWindow.smokeAmount * 0.6, mainWindow.smokeAmount * 0.6, 0) + } + depthBias: -20 + emitBursts: [ + DynamicBurst3D { + enabled: checkBoxStartBurst.checked + triggerMode: DynamicBurst3D.TriggerStart + amount: mainWindow.smokeAmount + amountVariation: mainWindow.smokeAmount * 0.4 + }, + DynamicBurst3D { + enabled: checkBoxEndBurst.checked + triggerMode: DynamicBurst3D.TriggerEnd + amount: mainWindow.smokeAmount + amountVariation: mainWindow.smokeAmount * 0.4 + } + ] + } + + TrailEmitter3D { + particle: explosionParticle + follow: spriteParticle + particleScale: 1.0 + particleScaleVariation: 0.8 + particleRotationVariation: Qt.vector3d(0, 0, 180) + particleRotationVelocityVariation: Qt.vector3d(0, 0, 40) + emitRate: 0 + lifeSpan: 3000 + lifeSpanVariation: 1000 + velocity: TargetDirection3D { + position: Qt.vector3d(0, 300, 0) + positionVariation: Qt.vector3d(100, 100, 0) + normalized: true + magnitude: 20 + mainWindow.explosionAmount * 0.2 + magnitudeVariation: magnitude * 0.5 + } + emitBursts: [ + DynamicBurst3D { + enabled: checkBoxExplosionBurst.checked + triggerMode: DynamicBurst3D.TriggerEnd + amount: mainWindow.explosionAmount + amountVariation: mainWindow.explosionAmount * 0.4 + } + ] + } + Gravity3D { + direction: Qt.vector3d(0, 1, 0) + magnitude: -200 + particles: [spriteParticle] + } + Gravity3D { + direction: Qt.vector3d(0, 1, 0) + magnitude: -40 + particles: [explosionParticle] + } + } + } + + SettingsView { + CustomCheckBox { + id: checkBoxStartBurst + text: "Smoke burst at start" + checked: true + } + CustomCheckBox { + id: checkBoxEndBurst + text: "Smoke burst at end" + checked: true + } + CustomLabel { + text: "Smoke amount" + } + CustomSlider { + id: smokeSlider + sliderValue: mainWindow.smokeAmount + fromValue: 5 + toValue: 50 + onSliderValueChanged: smokeAmount = sliderValue; + } + CustomCheckBox { + id: checkBoxExplosionBurst + text: "Explosion burst at end" + checked: true + } + CustomLabel { + text: "Explosion amount" + } + CustomSlider { + id: explosionSlider + sliderValue: mainWindow.explosionAmount + fromValue: 20 + toValue: 200 + onSliderValueChanged: mainWindow.explosionAmount = sliderValue; + } + } + + LoggingView { + anchors.bottom: parent.bottom + particleSystems: [psystem] + } +} |