ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
203 lines
6.7 KiB
QML
203 lines
6.7 KiB
QML
// 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
|
|
|
|
anchors.fill: parent
|
|
|
|
View3D {
|
|
anchors.fill: parent
|
|
|
|
environment: SceneEnvironment {
|
|
clearColor: "#202020"
|
|
backgroundMode: SceneEnvironment.Color
|
|
antialiasingMode: AppSettings.antialiasingMode
|
|
antialiasingQuality: AppSettings.antialiasingQuality
|
|
}
|
|
|
|
PerspectiveCamera {
|
|
id: camera
|
|
position: Qt.vector3d(0, 100, 600)
|
|
}
|
|
|
|
PointLight {
|
|
position: Qt.vector3d(0, 400, 100)
|
|
brightness: 10
|
|
ambientColor: Qt.rgba(0.3, 0.3, 0.3, 1.0)
|
|
}
|
|
|
|
// Model shared between particles
|
|
Component {
|
|
id: particleComponent
|
|
Model {
|
|
source: "#Cube"
|
|
scale: Qt.vector3d(0.4, 0.4, 0.4)
|
|
materials: PrincipledMaterial {
|
|
}
|
|
}
|
|
}
|
|
|
|
ParticleSystem3D {
|
|
id: psystem
|
|
|
|
// Particles
|
|
ModelParticle3D {
|
|
id: particleNone
|
|
delegate: particleComponent
|
|
maxAmount: 40
|
|
color: "#ffffff"
|
|
fadeInEffect: ModelParticle3D.FadeNone
|
|
fadeOutEffect: ModelParticle3D.FadeNone
|
|
hasTransparency: false
|
|
}
|
|
ModelParticle3D {
|
|
id: particleOpacity
|
|
delegate: particleComponent
|
|
maxAmount: 40
|
|
color: "#ffffff"
|
|
fadeInEffect: ModelParticle3D.FadeOpacity
|
|
fadeOutEffect: ModelParticle3D.FadeOpacity
|
|
fadeInDuration: sliderFadeInDuration.sliderValue
|
|
fadeOutDuration: sliderFadeOutDuration.sliderValue
|
|
}
|
|
ModelParticle3D {
|
|
id: particleScale
|
|
delegate: particleComponent
|
|
maxAmount: 40
|
|
color: "#ffffff"
|
|
fadeInEffect: ModelParticle3D.FadeScale
|
|
fadeOutEffect: ModelParticle3D.FadeScale
|
|
fadeInDuration: sliderFadeInDuration.sliderValue
|
|
fadeOutDuration: sliderFadeOutDuration.sliderValue
|
|
}
|
|
ModelParticle3D {
|
|
id: particleScaleOpacity
|
|
delegate: particleComponent
|
|
maxAmount: 40
|
|
color: "#ffffff"
|
|
fadeInEffect: ModelParticle3D.FadeScale
|
|
fadeOutEffect: ModelParticle3D.FadeOpacity
|
|
fadeInDuration: sliderFadeInDuration.sliderValue
|
|
fadeOutDuration: sliderFadeOutDuration.sliderValue
|
|
}
|
|
|
|
// Emitters, one per particle
|
|
ParticleEmitter3D {
|
|
particle: particleNone
|
|
position: Qt.vector3d(300, 200, 0)
|
|
particleScaleVariation: 0.5
|
|
particleRotationVariation: Qt.vector3d(180, 180, 180)
|
|
particleRotationVelocityVariation: Qt.vector3d(200, 200, 200);
|
|
velocity: VectorDirection3D {
|
|
direction: Qt.vector3d(-200, 0, 0)
|
|
}
|
|
emitRate: 10
|
|
lifeSpan: 4000
|
|
Node {
|
|
x: 80
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "NONE"
|
|
font.pointSize: AppSettings.fontSizeLarge
|
|
color: "#ffffff"
|
|
}
|
|
}
|
|
}
|
|
ParticleEmitter3D {
|
|
particle: particleOpacity
|
|
position: Qt.vector3d(300, 100, 0)
|
|
particleScaleVariation: 0.5
|
|
particleRotationVariation: Qt.vector3d(180, 180, 180)
|
|
particleRotationVelocityVariation: Qt.vector3d(200, 200, 200);
|
|
velocity: VectorDirection3D {
|
|
direction: Qt.vector3d(-200, 0, 0)
|
|
}
|
|
emitRate: 10
|
|
lifeSpan: 4000
|
|
Node {
|
|
x: 80
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "OPACITY"
|
|
font.pointSize: AppSettings.fontSizeLarge
|
|
color: "#ffffff"
|
|
}
|
|
}
|
|
}
|
|
ParticleEmitter3D {
|
|
particle: particleScale
|
|
position: Qt.vector3d(300, 0, 0)
|
|
particleScaleVariation: 0.5
|
|
particleRotationVariation: Qt.vector3d(180, 180, 180)
|
|
particleRotationVelocityVariation: Qt.vector3d(200, 200, 200);
|
|
velocity: VectorDirection3D {
|
|
direction: Qt.vector3d(-200, 0, 0)
|
|
}
|
|
emitRate: 10
|
|
lifeSpan: 4000
|
|
Node {
|
|
x: 80
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "SCALE"
|
|
font.pointSize: AppSettings.fontSizeLarge
|
|
color: "#ffffff"
|
|
}
|
|
}
|
|
}
|
|
ParticleEmitter3D {
|
|
particle: particleScaleOpacity
|
|
position: Qt.vector3d(300, -100, 0)
|
|
particleScaleVariation: 0.5
|
|
particleRotationVariation: Qt.vector3d(180, 180, 180)
|
|
particleRotationVelocityVariation: Qt.vector3d(200, 200, 200);
|
|
velocity: VectorDirection3D {
|
|
direction: Qt.vector3d(-200, 0, 0)
|
|
}
|
|
emitRate: 10
|
|
lifeSpan: 4000
|
|
Node {
|
|
x: 80
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "SCALE -> OPACITY"
|
|
font.pointSize: AppSettings.fontSizeLarge
|
|
color: "#ffffff"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
SettingsView {
|
|
CustomLabel {
|
|
text: "Fade In Duration (ms)"
|
|
}
|
|
CustomSlider {
|
|
id: sliderFadeInDuration
|
|
sliderValue: 1500
|
|
fromValue: 0
|
|
toValue: 4000
|
|
}
|
|
CustomLabel {
|
|
text: "Fade Out Duration (ms)"
|
|
}
|
|
CustomSlider {
|
|
id: sliderFadeOutDuration
|
|
sliderValue: 1500
|
|
fromValue: 0
|
|
toValue: 4000
|
|
}
|
|
}
|
|
|
|
LoggingView {
|
|
anchors.bottom: parent.bottom
|
|
particleSystems: [psystem]
|
|
}
|
|
}
|