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.
161 lines
4.8 KiB
QML
161 lines
4.8 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
|
|
property real fontSize: width * 0.012
|
|
|
|
View3D {
|
|
id: view
|
|
anchors.fill: parent
|
|
|
|
environment: SceneEnvironment {
|
|
clearColor: "#202020"
|
|
backgroundMode: SceneEnvironment.Color
|
|
antialiasingMode: SceneEnvironment.MSAA
|
|
antialiasingQuality: SceneEnvironment.High
|
|
}
|
|
|
|
PerspectiveCamera {
|
|
id: camera
|
|
property real cameraAnim: 0
|
|
SequentialAnimation {
|
|
running: true
|
|
loops: Animation.Infinite
|
|
NumberAnimation {
|
|
target: camera
|
|
property: "cameraAnim"
|
|
to: 1
|
|
duration: 4000
|
|
easing.type: Easing.InOutQuad
|
|
}
|
|
NumberAnimation {
|
|
target: camera
|
|
property: "cameraAnim"
|
|
to: 0
|
|
duration: 4000
|
|
easing.type: Easing.InOutQuad
|
|
}
|
|
}
|
|
position: Qt.vector3d(500 * Math.sin(cameraAnim * Math.PI * 2), 0, 500 * Math.cos(cameraAnim * Math.PI * 2))
|
|
eulerRotation: Qt.vector3d(0, cameraAnim * 360, 0)
|
|
}
|
|
|
|
Timer {
|
|
running: true
|
|
repeat: true
|
|
interval: 4000
|
|
onTriggered: {
|
|
if (shape1.delegate === cube) {
|
|
shape1.delegate = suzanne;
|
|
shape2.delegate = suzanne;
|
|
} else if (shape1.delegate === suzanne) {
|
|
shape1.delegate = cube;
|
|
shape2.delegate = cube;
|
|
}
|
|
}
|
|
}
|
|
|
|
ParticleSystem3D {
|
|
id: psystem
|
|
|
|
SpriteParticle3D {
|
|
id: particleFire
|
|
sprite: Texture {
|
|
source: "images/sphere.png"
|
|
}
|
|
colorTable: Texture {
|
|
source: "images/colorTable.png"
|
|
}
|
|
maxAmount: 6000
|
|
color: "#ffffff"
|
|
billboard: true
|
|
blendMode: SpriteParticle3D.Screen
|
|
}
|
|
|
|
Component {
|
|
id: suzanne
|
|
Model {
|
|
source: "meshes/suzanne.mesh"
|
|
scale: Qt.vector3d(100, 100, 100)
|
|
materials: PrincipledMaterial { baseColor: "red" }
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: cube
|
|
Model {
|
|
source: "#Cube"
|
|
scale: Qt.vector3d(2, 2, 2)
|
|
materials: PrincipledMaterial { baseColor: "red" }
|
|
}
|
|
}
|
|
|
|
ParticleEmitter3D {
|
|
particle: particleFire
|
|
position: Qt.vector3d(-150, 0, 0)
|
|
particleScale: 1
|
|
particleScaleVariation: 1
|
|
velocity: VectorDirection3D {
|
|
direction: Qt.vector3d(0, 60, 0)
|
|
directionVariation: Qt.vector3d(6, 6, 6)
|
|
}
|
|
emitRate: 3000
|
|
lifeSpan: 1000
|
|
shape: ParticleModelShape3D {
|
|
id: shape1
|
|
delegate: suzanne
|
|
}
|
|
Node {
|
|
x: -30
|
|
y: 150
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Filled"
|
|
font.pointSize: mainWindow.fontSize
|
|
color: "#ffffff"
|
|
}
|
|
}
|
|
}
|
|
|
|
ParticleEmitter3D {
|
|
particle: particleFire
|
|
position: Qt.vector3d(150, 0, 0)
|
|
particleScale: 1
|
|
particleScaleVariation: 1
|
|
velocity: VectorDirection3D {
|
|
direction: Qt.vector3d(0, 60, 0)
|
|
directionVariation: Qt.vector3d(6, 6, 6)
|
|
}
|
|
emitRate: 3000
|
|
lifeSpan: 1000
|
|
shape: ParticleModelShape3D {
|
|
id: shape2
|
|
delegate: suzanne
|
|
fill: false
|
|
}
|
|
Node {
|
|
x: -30
|
|
y: 150
|
|
Text {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Surface"
|
|
font.pointSize: mainWindow.fontSize
|
|
color: "#ffffff"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
LoggingView {
|
|
anchors.bottom: parent.bottom
|
|
particleSystems: [psystem]
|
|
}
|
|
}
|