Immense Particles Refactor Part C
Demos work again (also, the examples I missed). Added an example launcher for particles.
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Flipable {
|
Flipable {
|
||||||
id: container
|
id: container
|
||||||
|
@ -57,6 +57,8 @@ Flipable {
|
||||||
property int rating: 2
|
property int rating: 2
|
||||||
property variant prevScale: 1.0
|
property variant prevScale: 1.0
|
||||||
|
|
||||||
|
property int flipDuration: 1600
|
||||||
|
|
||||||
signal closed
|
signal closed
|
||||||
|
|
||||||
transform: Rotation {
|
transform: Rotation {
|
||||||
|
@ -137,94 +139,172 @@ Flipable {
|
||||||
slider.value = prevScale;
|
slider.value = prevScale;
|
||||||
}
|
}
|
||||||
if (inBackState && bigImage.status == Image.Ready)
|
if (inBackState && bigImage.status == Image.Ready)
|
||||||
particleBox.imageInAnim();
|
effectBox.imageInAnim();
|
||||||
}
|
}
|
||||||
property bool inBackState: false
|
property bool inBackState: false
|
||||||
onInBackStateChanged:{
|
onInBackStateChanged:{
|
||||||
if(inBackState && bigImage.status == Image.Ready)
|
if(inBackState && bigImage.status == Image.Ready)
|
||||||
particleBox.imageInAnim();
|
effectBox.imageInAnim();
|
||||||
else if (!inBackState && bigImage.status == Image.Ready)
|
else if (!inBackState && bigImage.status == Image.Ready)
|
||||||
particleBox.imageOutAnim();
|
effectBox.imageOutAnim();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ShaderEffectSource{
|
||||||
|
id: pictureSource
|
||||||
|
sourceItem: bigImage
|
||||||
|
smooth: true
|
||||||
|
//Workaround: Doesn't work below lines
|
||||||
|
width: bigImage.width
|
||||||
|
height: bigImage.width
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
Turbulence{//only fill visible rect
|
||||||
|
id: turbulence
|
||||||
|
system: imageSystem
|
||||||
|
anchors.fill: parent
|
||||||
|
frequency: 100
|
||||||
|
strength: 250
|
||||||
|
active: false
|
||||||
|
}
|
||||||
|
|
||||||
Item{
|
Item{
|
||||||
id: particleBox
|
id: effectBox
|
||||||
width: bigImage.width * bigImage.scale
|
width: bigImage.width * bigImage.scale
|
||||||
height: bigImage.height * bigImage.scale
|
height: bigImage.height * bigImage.scale
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
|
||||||
function imageInAnim(){
|
function imageInAnim(){
|
||||||
cp.visible = true;
|
|
||||||
pixAffect.onceOff = false;
|
|
||||||
bigImage.visible = false;
|
bigImage.visible = false;
|
||||||
|
noiseIn.visible = true;
|
||||||
endEffectTimer.start();
|
endEffectTimer.start();
|
||||||
pixelEmitter.pulse(1);
|
|
||||||
}
|
}
|
||||||
function imageOutAnim(){
|
function imageOutAnim(){
|
||||||
cp.visible = true;
|
|
||||||
pixAffect.onceOff = true;
|
|
||||||
bigImage.visible = false;
|
bigImage.visible = false;
|
||||||
|
noiseIn.visible = false;
|
||||||
turbulence.active = true;
|
turbulence.active = true;
|
||||||
endEffectTimer.start();
|
endEffectTimer.start();
|
||||||
pixelEmitter.burst(2048);
|
pixelEmitter.burst(2048);
|
||||||
}
|
}
|
||||||
Timer{
|
Timer{
|
||||||
id: endEffectTimer
|
id: endEffectTimer
|
||||||
interval: 1000
|
interval: flipDuration
|
||||||
repeat: false
|
repeat: false
|
||||||
running: false
|
running: false
|
||||||
onTriggered:{
|
onTriggered:{
|
||||||
bigImage.visible = true;
|
|
||||||
turbulence.active = false;
|
turbulence.active = false;
|
||||||
cp.visible = false;
|
noiseIn.visible = false;
|
||||||
|
bigImage.visible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ShaderEffectItem{
|
||||||
|
id: noiseIn
|
||||||
|
anchors.fill: parent
|
||||||
|
property real t: 0
|
||||||
|
visible: false
|
||||||
|
onVisibleChanged: tAnim.start()
|
||||||
|
NumberAnimation{
|
||||||
|
id: tAnim
|
||||||
|
target: noiseIn
|
||||||
|
property: "t"
|
||||||
|
from: 0.0
|
||||||
|
to: 1.0
|
||||||
|
duration: flipDuration
|
||||||
|
}
|
||||||
|
property variant source: pictureSource
|
||||||
|
property variant noise: ShaderEffectSource{
|
||||||
|
sourceItem:Image{
|
||||||
|
source: "images/noise.png"
|
||||||
|
}
|
||||||
|
hideSource: true
|
||||||
|
smooth: false
|
||||||
|
}
|
||||||
|
fragmentShader:"
|
||||||
|
uniform sampler2D noise;
|
||||||
|
uniform sampler2D source;
|
||||||
|
uniform highp float t;
|
||||||
|
uniform lowp float qt_Opacity;
|
||||||
|
varying highp vec2 qt_TexCoord0;
|
||||||
|
void main(){
|
||||||
|
//Want to use noise2, but it always returns (0,0)?
|
||||||
|
if(texture2D(noise, qt_TexCoord0).w <= t)
|
||||||
|
gl_FragColor = texture2D(source, qt_TexCoord0) * qt_Opacity;
|
||||||
|
else
|
||||||
|
gl_FragColor = vec4(0.,0.,0.,0.);
|
||||||
|
}
|
||||||
|
"
|
||||||
|
}
|
||||||
ParticleSystem{
|
ParticleSystem{
|
||||||
id: imageSystem
|
id: imageSystem
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
Emitter{
|
||||||
id: cp
|
|
||||||
system: imageSystem
|
|
||||||
color: "gray"
|
|
||||||
alpha: 1
|
|
||||||
image: "images/squareParticle.png"
|
|
||||||
colorVariation: 0
|
|
||||||
}
|
|
||||||
Picture{
|
|
||||||
id: pixAffect
|
|
||||||
system: imageSystem
|
|
||||||
anchors.fill: parent
|
|
||||||
image: container.photoUrl;
|
|
||||||
onceOff: true
|
|
||||||
}
|
|
||||||
Turbulence{
|
|
||||||
id: turbulence
|
|
||||||
system: imageSystem
|
|
||||||
anchors.fill: parent
|
|
||||||
frequency: 100
|
|
||||||
strength: 250
|
|
||||||
active: false
|
|
||||||
}
|
|
||||||
TrailEmitter{
|
|
||||||
id: pixelEmitter0
|
|
||||||
system: imageSystem
|
|
||||||
height: parent.height
|
|
||||||
particleSize: 4
|
|
||||||
particleDuration: 1000
|
|
||||||
particlesPerSecond: 4096
|
|
||||||
speed: PointVector{x: 360; xVariation: 8; yVariation: 4}
|
|
||||||
emitting: false
|
|
||||||
}
|
|
||||||
TrailEmitter{
|
|
||||||
id: pixelEmitter
|
id: pixelEmitter
|
||||||
system: imageSystem
|
system: imageSystem
|
||||||
anchors.fill: parent
|
//anchors.fill: parent
|
||||||
|
width: Math.min(bigImage.width * bigImage.scale, flickable.width);
|
||||||
|
height: Math.min(bigImage.height * bigImage.scale, flickable.height);
|
||||||
|
anchors.centerIn: parent
|
||||||
particleSize: 4
|
particleSize: 4
|
||||||
particleDuration: 1000
|
particleDuration: flipDuration
|
||||||
particlesPerSecond: 2048
|
particlesPerSecond: 2048
|
||||||
emitting: false
|
emitting: false
|
||||||
}
|
}
|
||||||
|
CustomParticle{
|
||||||
|
id: blowOut
|
||||||
|
system: imageSystem
|
||||||
|
property real maxWidth: effectBox.width
|
||||||
|
property real maxHeight: effectBox.height
|
||||||
|
vertexShader:"
|
||||||
|
attribute highp vec2 vPos;
|
||||||
|
attribute highp vec2 vTex;
|
||||||
|
attribute highp vec4 vData; // x = time, y = lifeSpan, z = size, w = endSize
|
||||||
|
attribute highp vec4 vVec; // x,y = constant speed, z,w = acceleration
|
||||||
|
attribute highp float r;
|
||||||
|
|
||||||
|
uniform highp float maxWidth;
|
||||||
|
uniform highp float maxHeight;
|
||||||
|
|
||||||
|
uniform highp mat4 qt_ModelViewProjectionMatrix;
|
||||||
|
uniform highp float timestamp;
|
||||||
|
uniform lowp float qt_Opacity;
|
||||||
|
|
||||||
|
varying highp vec2 fTex2;
|
||||||
|
varying lowp float fFade;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
fTex2 = vec2(vPos.x / maxWidth, vPos.y / maxHeight);
|
||||||
|
highp float size = vData.z;
|
||||||
|
highp float endSize = vData.w;
|
||||||
|
|
||||||
|
highp float t = (timestamp - vData.x) / vData.y;
|
||||||
|
|
||||||
|
highp float currentSize = mix(size, endSize, t * t);
|
||||||
|
|
||||||
|
if (t < 0. || t > 1.)
|
||||||
|
currentSize = 0.;
|
||||||
|
|
||||||
|
highp vec2 pos = vPos
|
||||||
|
- currentSize / 2. + currentSize * vTex // adjust size
|
||||||
|
+ vVec.xy * t * vData.y // apply speed vector..
|
||||||
|
+ 0.5 * vVec.zw * pow(t * vData.y, 2.);
|
||||||
|
|
||||||
|
gl_Position = qt_ModelViewProjectionMatrix * vec4(pos.x, pos.y, 0, 1);
|
||||||
|
|
||||||
|
highp float fadeIn = min(t * 10., 1.);
|
||||||
|
highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.));
|
||||||
|
|
||||||
|
fFade = 1.0;//fadeIn * fadeOut * qt_Opacity;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
property variant pictureTexture: pictureSource
|
||||||
|
fragmentShader: "
|
||||||
|
uniform sampler2D pictureTexture;
|
||||||
|
varying highp vec2 fTex2;
|
||||||
|
varying highp float fFade;
|
||||||
|
void main() {
|
||||||
|
gl_FragColor = texture2D(pictureTexture, fTex2) * fFade;
|
||||||
|
}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,7 +348,7 @@ Flipable {
|
||||||
transitions: Transition {
|
transitions: Transition {
|
||||||
SequentialAnimation {
|
SequentialAnimation {
|
||||||
PropertyAction { target: bigImage; property: "smooth"; value: false }
|
PropertyAction { target: bigImage; property: "smooth"; value: false }
|
||||||
NumberAnimation { easing.type: Easing.InOutQuad; properties: "angle"; duration: 1000 }
|
NumberAnimation { easing.type: Easing.InOutQuad; properties: "angle"; duration: flipDuration }
|
||||||
PropertyAction { target: bigImage; property: "smooth"; value: !flickable.movingVertically }
|
PropertyAction { target: bigImage; property: "smooth"; value: !flickable.movingVertically }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item{
|
Item{
|
||||||
id: container
|
id: container
|
||||||
|
@ -59,17 +59,17 @@ Item{
|
||||||
running: container.visible
|
running: container.visible
|
||||||
id: barSys
|
id: barSys
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
color: "lightsteelblue"
|
color: "lightsteelblue"
|
||||||
alpha: 0.1
|
alpha: 0.1
|
||||||
colorVariation: 0.05
|
colorVariation: 0.05
|
||||||
image: "images/particle.png"
|
image: "images/particle.png"
|
||||||
system: barSys
|
system: barSys
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
y: 2; height: parent.height-4;
|
y: 2; height: parent.height-4;
|
||||||
x: 2; width: Math.max(parent.width * progress - 4, 0);
|
x: 2; width: Math.max(parent.width * progress - 4, 0);
|
||||||
speed: AngleVector{ angleVariation: 180; magnitudeVariation: 12 }
|
speed: AngledDirection{ angleVariation: 180; magnitudeVariation: 12 }
|
||||||
system: barSys
|
system: barSys
|
||||||
particlesPerSecond: width;
|
particlesPerSecond: width;
|
||||||
particleDuration: 1000
|
particleDuration: 1000
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item{
|
Item{
|
||||||
id: container
|
id: container
|
||||||
|
@ -52,7 +52,7 @@ Item{
|
||||||
anchors.fill:parent
|
anchors.fill:parent
|
||||||
overwrite: false
|
overwrite: false
|
||||||
}
|
}
|
||||||
DataParticle{
|
ModelParticle{
|
||||||
id: mp
|
id: mp
|
||||||
fade: false
|
fade: false
|
||||||
system: sys
|
system: sys
|
||||||
|
@ -66,35 +66,35 @@ Item{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
property real emitterSpacing: parent.width/3
|
property real emitterSpacing: parent.width/3
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
system: sys
|
system: sys
|
||||||
width: emitterSpacing - 64
|
width: emitterSpacing - 64
|
||||||
x: emitterSpacing*0 + 32
|
x: emitterSpacing*0 + 32
|
||||||
y: -128
|
y: -128
|
||||||
height: 32
|
height: 32
|
||||||
speed: PointVector{ y: (container.height + 128)/12 }
|
speed: PointDirection{ y: (container.height + 128)/12 }
|
||||||
particlesPerSecond: 0.4
|
particlesPerSecond: 0.4
|
||||||
particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
|
particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
|
||||||
maxParticles: 15
|
maxParticles: 15
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
system: sys
|
system: sys
|
||||||
width: emitterSpacing - 64
|
width: emitterSpacing - 64
|
||||||
x: emitterSpacing*1 + 32
|
x: emitterSpacing*1 + 32
|
||||||
y: -128
|
y: -128
|
||||||
height: 32
|
height: 32
|
||||||
speed: PointVector{ y: (container.height + 128)/12 }
|
speed: PointDirection{ y: (container.height + 128)/12 }
|
||||||
particlesPerSecond: 0.4
|
particlesPerSecond: 0.4
|
||||||
particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
|
particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
|
||||||
maxParticles: 15
|
maxParticles: 15
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
system: sys
|
system: sys
|
||||||
width: emitterSpacing - 64
|
width: emitterSpacing - 64
|
||||||
x: emitterSpacing*2 + 32
|
x: emitterSpacing*2 + 32
|
||||||
y: -128
|
y: -128
|
||||||
height: 32
|
height: 32
|
||||||
speed: PointVector{ y: (container.height + 128)/12 }
|
speed: PointDirection{ y: (container.height + 128)/12 }
|
||||||
particlesPerSecond: 0.4
|
particlesPerSecond: 0.4
|
||||||
particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
|
particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
|
||||||
maxParticles: 15
|
maxParticles: 15
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Package {
|
Package {
|
||||||
function photoClicked() {
|
function photoClicked() {
|
||||||
|
|
After Width: | Height: | Size: 90 KiB |
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
import "content"
|
import "content"
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
|
@ -56,7 +56,7 @@ Item {
|
||||||
id: bgParticles
|
id: bgParticles
|
||||||
startTime: 16000
|
startTime: 16000
|
||||||
}
|
}
|
||||||
ColoredParticle {
|
ImageParticle {
|
||||||
particles: ["trail"]
|
particles: ["trail"]
|
||||||
image: "content/images/particle.png"
|
image: "content/images/particle.png"
|
||||||
color: "#1A1A6F"
|
color: "#1A1A6F"
|
||||||
|
@ -65,12 +65,12 @@ Item {
|
||||||
blueVariation: 0.8
|
blueVariation: 0.8
|
||||||
system: bgParticles
|
system: bgParticles
|
||||||
}
|
}
|
||||||
TrailEmitter {
|
Emitter {
|
||||||
particle: "drops"
|
particle: "drops"
|
||||||
width: parent.width
|
width: parent.width
|
||||||
particlesPerSecond: 0.5
|
particlesPerSecond: 0.5
|
||||||
particleDuration: 20000
|
particleDuration: 20000
|
||||||
speed: PointVector{
|
speed: PointDirection{
|
||||||
y: {screen.height/18}
|
y: {screen.height/18}
|
||||||
}
|
}
|
||||||
system: bgParticles
|
system: bgParticles
|
||||||
|
@ -87,7 +87,7 @@ Item {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
emissionWidth: 16
|
emissionWidth: 16
|
||||||
emissionHeight: 16
|
emissionHeight: 16
|
||||||
emissionShape: Ellipse{}
|
emissionShape: EllipseShape{}
|
||||||
}
|
}
|
||||||
|
|
||||||
VisualDataModel{
|
VisualDataModel{
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 1.0
|
||||||
import Qt.labs.particles 1.0
|
import QtQuick.Particles 1.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
property bool explode : false
|
property bool explode : false
|
||||||
|
|
|
@ -85,7 +85,7 @@ Component {
|
||||||
anchors.centerIn: parent; anchors.verticalCenterOffset: -30
|
anchors.centerIn: parent; anchors.verticalCenterOffset: -30
|
||||||
path: Path {
|
path: Path {
|
||||||
PathAttribute { name: 'z'; value: 9999.0 }
|
PathAttribute { name: 'z'; value: 9999.0 }
|
||||||
PathLine { x: 1; y: 1 }
|
PathLineShape { x: 1; y: 1 }
|
||||||
PathAttribute { name: 'z'; value: 0.0 }
|
PathAttribute { name: 'z'; value: 0.0 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
@ -53,14 +53,14 @@ Item {
|
||||||
|
|
||||||
width: 24
|
width: 24
|
||||||
height: 24
|
height: 24
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: visualization
|
id: visualization
|
||||||
particle: "blaster"
|
particle: "blaster"
|
||||||
system: container.system
|
system: container.system
|
||||||
emitting: show
|
emitting: show
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
shape: Ellipse{}
|
shape: EllipseShape{}
|
||||||
speed: DirectedVector{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true}
|
speed: TargetedDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true}
|
||||||
particleDuration: 1000
|
particleDuration: 1000
|
||||||
particlesPerSecond: 64
|
particlesPerSecond: 64
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ Item {
|
||||||
rofTimer.repeat = false;
|
rofTimer.repeat = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: emitter
|
id: emitter
|
||||||
particle: "blaster"
|
particle: "blaster"
|
||||||
emitting: false
|
emitting: false
|
||||||
|
@ -125,7 +125,7 @@ Item {
|
||||||
particleSize: 24
|
particleSize: 24
|
||||||
particleEndSize:16
|
particleEndSize:16
|
||||||
particleSizeVariation: 8
|
particleSizeVariation: 8
|
||||||
speed: DirectedVector{
|
speed: TargetedDirection{
|
||||||
id: blastVector
|
id: blastVector
|
||||||
targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
|
targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
@ -49,7 +49,7 @@ Item {
|
||||||
|
|
||||||
width: 24
|
width: 24
|
||||||
height: 24
|
height: 24
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: visualization
|
id: visualization
|
||||||
particle: "cannon"
|
particle: "cannon"
|
||||||
emitting: container.show
|
emitting: container.show
|
||||||
|
@ -78,7 +78,7 @@ Item {
|
||||||
}
|
}
|
||||||
emitter.burst(1);
|
emitter.burst(1);
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: emitter
|
id: emitter
|
||||||
particle: "cannon"
|
particle: "cannon"
|
||||||
emitting: false
|
emitting: false
|
||||||
|
@ -89,7 +89,7 @@ Item {
|
||||||
particlesPerSecond: 1
|
particlesPerSecond: 1
|
||||||
particleSize: 8
|
particleSize: 8
|
||||||
particleEndSize: 4
|
particleEndSize: 4
|
||||||
speed: DirectedVector{
|
speed: TargetedDirection{
|
||||||
id: blastVector
|
id: blastVector
|
||||||
targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
|
targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item{
|
Item{
|
||||||
id: container
|
id: container
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
@ -54,7 +54,7 @@ Item {
|
||||||
property int gunType: 0
|
property int gunType: 0
|
||||||
width: 128
|
width: 128
|
||||||
height: 128
|
height: 128
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
//TODO: Cooler would be an 'orbiting' affector
|
//TODO: Cooler would be an 'orbiting' affector
|
||||||
//TODO: On the subject, opacity and size should be grouped type 'overLife' if we can cram that in the particles
|
//TODO: On the subject, opacity and size should be grouped type 'overLife' if we can cram that in the particles
|
||||||
system: container.system
|
system: container.system
|
||||||
|
@ -62,7 +62,7 @@ Item {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
width: 64
|
width: 64
|
||||||
height: 64
|
height: 64
|
||||||
shape: Ellipse{}
|
shape: EllipseShape{}
|
||||||
|
|
||||||
particlesPerSecond: hp > 0 ? hp * 1 + 20 : 0
|
particlesPerSecond: hp > 0 ? hp * 1 + 20 : 0
|
||||||
particleDuration: 2400
|
particleDuration: 2400
|
||||||
|
@ -72,13 +72,13 @@ Item {
|
||||||
particleSizeVariation: 16
|
particleSizeVariation: 16
|
||||||
particleEndSize: 16
|
particleEndSize: 16
|
||||||
|
|
||||||
speed: AngleVector{angleVariation:360; magnitudeVariation: 32}
|
speed: AngledDirection{angleVariation:360; magnitudeVariation: 32}
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
system: container.system
|
system: container.system
|
||||||
particle: "cruiserArmor"
|
particle: "cruiserArmor"
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
shape: Ellipse{ fill: false }
|
shape: EllipseShape{ fill: false }
|
||||||
emitting: hp>0
|
emitting: hp>0
|
||||||
|
|
||||||
particlesPerSecond: 16
|
particlesPerSecond: 16
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
@ -54,7 +54,7 @@ Item {
|
||||||
property int gunType: 0
|
property int gunType: 0
|
||||||
width: 128
|
width: 128
|
||||||
height: 128
|
height: 128
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
system: container.system
|
system: container.system
|
||||||
particle: "frigateShield"
|
particle: "frigateShield"
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
@ -63,13 +63,13 @@ Item {
|
||||||
particleDuration: 4800
|
particleDuration: 4800
|
||||||
emitting: hp > 0
|
emitting: hp > 0
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
system: container.system
|
system: container.system
|
||||||
particle: container.shipParticle
|
particle: container.shipParticle
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
width: 64
|
width: 64
|
||||||
height: 16
|
height: 16
|
||||||
shape: Ellipse{}
|
shape: EllipseShape{}
|
||||||
|
|
||||||
particleSize: 16
|
particleSize: 16
|
||||||
particleSizeVariation: 8
|
particleSizeVariation: 8
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
SequentialLoader {
|
SequentialLoader {
|
||||||
id: hLdr
|
id: hLdr
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
@ -49,14 +49,14 @@ Item {
|
||||||
|
|
||||||
width: 24
|
width: 24
|
||||||
height: 24
|
height: 24
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: visualization
|
id: visualization
|
||||||
particle: "laser"
|
particle: "laser"
|
||||||
system: container.system
|
system: container.system
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
emitting: container.show
|
emitting: container.show
|
||||||
shape: Ellipse{}
|
shape: EllipseShape{}
|
||||||
speed: DirectedVector{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true }
|
speed: TargetedDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true }
|
||||||
particleDuration: 1000
|
particleDuration: 1000
|
||||||
particlesPerSecond: 64
|
particlesPerSecond: 64
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ Item {
|
||||||
emitter.pulse(0.10);
|
emitter.pulse(0.10);
|
||||||
// console.log("Fire box: " + Math.min(container.width/2, target.x) + "," + Math.min(container.height/2, target.y) + " " + (Math.max(container.width/2, target.x) - Math.min(container.width/2, target.x)) + "," + (Math.max(container.height/2, target.y) - Math.min(container.height/2, target.y)));
|
// console.log("Fire box: " + Math.min(container.width/2, target.x) + "," + Math.min(container.height/2, target.y) + " " + (Math.max(container.width/2, target.x) - Math.min(container.width/2, target.x)) + "," + (Math.max(container.height/2, target.y) - Math.min(container.height/2, target.y)));
|
||||||
}
|
}
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: emitter
|
id: emitter
|
||||||
particle: "laser"
|
particle: "laser"
|
||||||
emitting: false
|
emitting: false
|
||||||
|
@ -93,7 +93,7 @@ Item {
|
||||||
width: Math.max(container.width/2, target.x) - x;
|
width: Math.max(container.width/2, target.x) - x;
|
||||||
y: Math.min(container.height/2, target.y);
|
y: Math.min(container.height/2, target.y);
|
||||||
height: Math.max(container.height/2, target.y) - y;
|
height: Math.max(container.height/2, target.y) - y;
|
||||||
shape: Line{
|
shape: LineShape{
|
||||||
mirrored: (emitter.y < 0 || emitter.x < 0) && !(emitter.y < 0 && emitter.x < 0 )//I just want XOR
|
mirrored: (emitter.y < 0 || emitter.x < 0) && !(emitter.y < 0 && emitter.x < 0 )//I just want XOR
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +103,6 @@ Item {
|
||||||
particleSize: 16
|
particleSize: 16
|
||||||
particleEndSize: 0
|
particleEndSize: 0
|
||||||
|
|
||||||
speed: PointVector{xVariation: 4; yVariation: 4}
|
speed: PointDirection{xVariation: 4; yVariation: 4}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,11 +39,11 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item{
|
Item{
|
||||||
property ParticleSystem sys
|
property ParticleSystem sys
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["default"]
|
particles: ["default"]
|
||||||
image: "pics/blur-circle3.png"
|
image: "pics/blur-circle3.png"
|
||||||
|
@ -51,7 +51,7 @@ Item{
|
||||||
colorVariation: 0.1
|
colorVariation: 0.1
|
||||||
z: 0
|
z: 0
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["redTeam"]
|
particles: ["redTeam"]
|
||||||
image: "pics/blur-circle3.png"
|
image: "pics/blur-circle3.png"
|
||||||
|
@ -59,7 +59,7 @@ Item{
|
||||||
colorVariation: 0.1
|
colorVariation: 0.1
|
||||||
z: 0
|
z: 0
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["greenTeam"]
|
particles: ["greenTeam"]
|
||||||
image: "pics/blur-circle3.png"
|
image: "pics/blur-circle3.png"
|
||||||
|
@ -67,7 +67,7 @@ Item{
|
||||||
colorVariation: 0.1
|
colorVariation: 0.1
|
||||||
z: 0
|
z: 0
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["blaster"]
|
particles: ["blaster"]
|
||||||
image: "pics/star2.png"
|
image: "pics/star2.png"
|
||||||
|
@ -76,7 +76,7 @@ Item{
|
||||||
colorVariation: 0.2
|
colorVariation: 0.2
|
||||||
z: 2
|
z: 2
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["laser"]
|
particles: ["laser"]
|
||||||
image: "pics/star3.png"
|
image: "pics/star3.png"
|
||||||
|
@ -85,7 +85,7 @@ Item{
|
||||||
colorVariation: 0.2
|
colorVariation: 0.2
|
||||||
z: 2
|
z: 2
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["cannon"]
|
particles: ["cannon"]
|
||||||
image: "pics/particle.png"
|
image: "pics/particle.png"
|
||||||
|
@ -93,7 +93,7 @@ Item{
|
||||||
colorVariation: 0.1
|
colorVariation: 0.1
|
||||||
z: 2
|
z: 2
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["cannonCore"]
|
particles: ["cannonCore"]
|
||||||
image: "pics/particle.png"
|
image: "pics/particle.png"
|
||||||
|
@ -101,7 +101,7 @@ Item{
|
||||||
colorVariation: 0.8
|
colorVariation: 0.8
|
||||||
z: 1
|
z: 1
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["cannonWake"]
|
particles: ["cannonWake"]
|
||||||
image: "pics/star.png"
|
image: "pics/star.png"
|
||||||
|
@ -109,7 +109,7 @@ Item{
|
||||||
colorVariation: 0.2
|
colorVariation: 0.2
|
||||||
z: 1
|
z: 1
|
||||||
}
|
}
|
||||||
ColoredParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["frigateShield"]
|
particles: ["frigateShield"]
|
||||||
image: "pics/blur-circle2.png"
|
image: "pics/blur-circle2.png"
|
||||||
|
@ -119,7 +119,7 @@ Item{
|
||||||
greenVariation: 0.1
|
greenVariation: 0.1
|
||||||
z: 3
|
z: 3
|
||||||
}
|
}
|
||||||
SpriteParticle{
|
ImageParticle{
|
||||||
system: sys
|
system: sys
|
||||||
particles: ["cruiserArmor"]
|
particles: ["cruiserArmor"]
|
||||||
z: 1
|
z: 1
|
||||||
|
@ -150,7 +150,7 @@ Item{
|
||||||
follow: "cannon"
|
follow: "cannon"
|
||||||
particlesPerParticlePerSecond: 64
|
particlesPerParticlePerSecond: 64
|
||||||
particleDuration: 600
|
particleDuration: 600
|
||||||
speed: AngleVector{ angleVariation: 360; magnitude: 48}
|
speed: AngledDirection{ angleVariation: 360; magnitude: 48}
|
||||||
particleSize: 16
|
particleSize: 16
|
||||||
particleEndSize: 8
|
particleEndSize: 8
|
||||||
particleSizeVariation: 2
|
particleSizeVariation: 2
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: me
|
id: me
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: container
|
id: container
|
||||||
|
@ -55,19 +55,19 @@ Item {
|
||||||
property int gunType: 0
|
property int gunType: 0
|
||||||
width: 128
|
width: 128
|
||||||
height: 128
|
height: 128
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
id: emitter
|
id: emitter
|
||||||
//TODO: Cooler would be an 'orbiting' affector
|
//TODO: Cooler would be an 'orbiting' affector
|
||||||
//TODO: On the subject, opacity and size should be grouped type 'overLife' if we can cram that in the particles
|
//TODO: On the subject, opacity and size should be grouped type 'overLife' if we can cram that in the particles
|
||||||
system: container.system
|
system: container.system
|
||||||
particle: container.shipParticle
|
particle: container.shipParticle
|
||||||
shape: Ellipse{}
|
shape: EllipseShape{}
|
||||||
|
|
||||||
particlesPerSecond: hp > 0 ? hp + 20 : 0
|
particlesPerSecond: hp > 0 ? hp + 20 : 0
|
||||||
particleDuration: blinkInterval
|
particleDuration: blinkInterval
|
||||||
maxParticles: (maxHP + 20)
|
maxParticles: (maxHP + 20)
|
||||||
|
|
||||||
acceleration: AngleVector{angleVariation: 360; magnitude: 8}
|
acceleration: AngledDirection{angleVariation: 360; magnitude: 8}
|
||||||
|
|
||||||
particleSize: 24
|
particleSize: 24
|
||||||
particleEndSize: 4
|
particleEndSize: 4
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
import "content"
|
import "content"
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
@ -93,18 +93,18 @@ Rectangle {
|
||||||
id: title
|
id: title
|
||||||
width: root.width
|
width: root.width
|
||||||
height: 240
|
height: 240
|
||||||
TrailEmitter{
|
Emitter{
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
system: particles
|
system: particles
|
||||||
emitting: true
|
emitting: true
|
||||||
particle: "default"
|
particle: "default"
|
||||||
particlesPerSecond: 1200
|
particlesPerSecond: 1200
|
||||||
particleDuration: 1200
|
particleDuration: 1200
|
||||||
shape: Mask{source:"content/pics/TitleText.png"}
|
shape: MaskShape{source:"content/pics/TitleText.png"}
|
||||||
particleSize: 16
|
particleSize: 16
|
||||||
particleEndSize: 0
|
particleEndSize: 0
|
||||||
particleSizeVariation: 8
|
particleSizeVariation: 8
|
||||||
speed: AngleVector{angleVariation:360; magnitudeVariation: 6}
|
speed: AngledDirection{angleVariation:360; magnitudeVariation: 6}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Button{
|
Button{
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: block
|
id: block
|
||||||
|
@ -71,7 +71,7 @@ Item {
|
||||||
Behavior on opacity { NumberAnimation { duration: 200 } }
|
Behavior on opacity { NumberAnimation { duration: 200 } }
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
}
|
||||||
TrailEmitter {
|
Emitter {
|
||||||
id: particles
|
id: particles
|
||||||
system: particleSystem
|
system: particleSystem
|
||||||
particle: {
|
particle: {
|
||||||
|
@ -85,12 +85,12 @@ Item {
|
||||||
}
|
}
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
speed: DirectedVector{targetX: block.width/2; targetY: block.height/2; magnitude: -60; magnitudeVariation: 60}
|
speed: TargetedDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -60; magnitudeVariation: 60}
|
||||||
shape: Ellipse{fill:true}
|
shape: EllipseShape{fill:true}
|
||||||
emitting: false;
|
emitting: false;
|
||||||
particleDuration: 700; particleDurationVariation: 100
|
particleDuration: 700; particleDurationVariation: 100
|
||||||
particlesPerSecond: 1000
|
particlesPerSecond: 1000
|
||||||
maxParticles: 100 //only fires 0.1s bursts (still 2x old number, ColoredParticle wants less than 16000 max though)
|
maxParticles: 100 //only fires 0.1s bursts (still 2x old number, ImageParticle wants less than 16000 max though)
|
||||||
particleSize: 28
|
particleSize: 28
|
||||||
particleEndSize: 14
|
particleEndSize: 14
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Qt.labs.particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
import "SamegameCore"
|
import "SamegameCore"
|
||||||
import "SamegameCore/samegame.js" as Logic
|
import "SamegameCore/samegame.js" as Logic
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ Rectangle {
|
||||||
}
|
}
|
||||||
Item{
|
Item{
|
||||||
ParticleSystem{ id: particleSystem; }
|
ParticleSystem{ id: particleSystem; }
|
||||||
ColoredParticle {
|
ImageParticle {
|
||||||
system: particleSystem
|
system: particleSystem
|
||||||
particles: ["red"]
|
particles: ["red"]
|
||||||
color: Qt.darker("red");//Actually want desaturated...
|
color: Qt.darker("red");//Actually want desaturated...
|
||||||
|
@ -85,7 +85,7 @@ Rectangle {
|
||||||
colorVariation: 0.4
|
colorVariation: 0.4
|
||||||
alpha: 0.1
|
alpha: 0.1
|
||||||
}
|
}
|
||||||
ColoredParticle {
|
ImageParticle {
|
||||||
system: particleSystem
|
system: particleSystem
|
||||||
particles: ["green"]
|
particles: ["green"]
|
||||||
color: Qt.darker("green");//Actually want desaturated...
|
color: Qt.darker("green");//Actually want desaturated...
|
||||||
|
@ -93,7 +93,7 @@ Rectangle {
|
||||||
colorVariation: 0.4
|
colorVariation: 0.4
|
||||||
alpha: 0.1
|
alpha: 0.1
|
||||||
}
|
}
|
||||||
ColoredParticle {
|
ImageParticle {
|
||||||
system: particleSystem
|
system: particleSystem
|
||||||
particles: ["blue"]
|
particles: ["blue"]
|
||||||
color: Qt.darker("blue");//Actually want desaturated...
|
color: Qt.darker("blue");//Actually want desaturated...
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 1.0
|
||||||
import Qt.labs.particles 1.0
|
import QtQuick.Particles 1.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
import QtQuick 1.0
|
import QtQuick 1.0
|
||||||
import Qt.labs.particles 1.0
|
import QtQuick.Particles 1.0
|
||||||
|
|
||||||
Item { id:link
|
Item { id:link
|
||||||
property bool dying: false
|
property bool dying: false
|
||||||
|
|
|
@ -98,6 +98,7 @@ Rectangle{
|
||||||
image: "content/star.png"
|
image: "content/star.png"
|
||||||
color: "white"
|
color: "white"
|
||||||
colorVariation: 0.1
|
colorVariation: 0.1
|
||||||
|
alpha: 0
|
||||||
}
|
}
|
||||||
ImageParticle{
|
ImageParticle{
|
||||||
id: roids
|
id: roids
|
||||||
|
@ -144,9 +145,11 @@ Rectangle{
|
||||||
|
|
||||||
colorVariation: 0.2
|
colorVariation: 0.2
|
||||||
}
|
}
|
||||||
GravitationalSingularity{
|
PointAttractor{
|
||||||
id: gs; x: root.width/2; y: root.height/2; strength: 4000000;
|
id: gs; x: root.width/2; y: root.height/2; strength: 4000000;
|
||||||
system: particles
|
system: particles
|
||||||
|
physics: PointAttractor.Acceleration
|
||||||
|
proportionalToDistance: PointAttractor.Quadratic
|
||||||
}
|
}
|
||||||
Kill{
|
Kill{
|
||||||
system: particles
|
system: particles
|
||||||
|
|
|
@ -0,0 +1,182 @@
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
** All rights reserved.
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
** This file is part of the examples of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
|
||||||
|
** the names of its contributors may be used to endorse or promote
|
||||||
|
** products derived from this software without specific prior written
|
||||||
|
** permission.
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
import QtQuick.Particles 2.0
|
||||||
|
import "launcherContent/launcher.js" as Util
|
||||||
|
import "launcherContent"
|
||||||
|
|
||||||
|
Rectangle{
|
||||||
|
color: "black"
|
||||||
|
width: 360
|
||||||
|
height: 600
|
||||||
|
Shell{
|
||||||
|
z: 1
|
||||||
|
id: shell
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
property string emissionMode: "Falling"
|
||||||
|
onEmissionModeChanged: workaround.active = true
|
||||||
|
VisualDataModel{//TODO: Transitions between modes
|
||||||
|
id: vdm
|
||||||
|
model: [
|
||||||
|
"../spaceexplorer/spaceexplorer.qml",
|
||||||
|
"../snow/snow.qml",
|
||||||
|
"../asteroid/asteroid.qml",
|
||||||
|
"../asteroid/blackhole.qml",
|
||||||
|
"../custom/blurparticles.qml",
|
||||||
|
"../modelparticles/bubbles.qml",
|
||||||
|
"../modelparticles/gridsplosion.qml",
|
||||||
|
"../modelparticles/package.qml",
|
||||||
|
"../modelparticles/stream.qml",
|
||||||
|
"../allsmiles/plain.qml",
|
||||||
|
"../allsmiles/smile.qml",
|
||||||
|
"../allsmiles/smilefactory.qml",
|
||||||
|
"../allsmiles/ultraparticles.qml",
|
||||||
|
"../allsmiles/spriteparticles.qml",
|
||||||
|
"../allsmiles/spritestateparticles.qml",
|
||||||
|
"../allsmiles/spritevariedparticles.qml",
|
||||||
|
"../trails/velocityfrommotion.qml",
|
||||||
|
"../trails/fireballs.qml",
|
||||||
|
"../trails/list.qml",
|
||||||
|
"../trails/portal.qml",
|
||||||
|
"../trails/rainbow.qml",
|
||||||
|
"../trails/dynamicemitters.qml",
|
||||||
|
"../trails/overburst.qml",
|
||||||
|
"../trails/layered.qml",
|
||||||
|
"../trails/shimmer.qml",
|
||||||
|
"../trails/turbulence.qml",
|
||||||
|
"../../../../demos/declarative/samegame/samegame.qml",
|
||||||
|
"../../../../demos/declarative/plasmapatrol/plasmapatrol.qml",
|
||||||
|
"../../../../demos/declarative/flickr/flickr.qml"
|
||||||
|
]
|
||||||
|
delegate: Rectangle{
|
||||||
|
color: "white"
|
||||||
|
width: 96
|
||||||
|
height: 96
|
||||||
|
Image{
|
||||||
|
width: 72
|
||||||
|
height: 72
|
||||||
|
anchors.centerIn: parent
|
||||||
|
source: Util.iconFromPath(modelData)
|
||||||
|
}
|
||||||
|
Text{
|
||||||
|
text: Util.nameFromPath(modelData)
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
font.pixelSize: 8
|
||||||
|
}
|
||||||
|
MouseArea{
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: shell.setDemo(modelData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GridView{
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.bottomMargin: 128
|
||||||
|
model: vdm
|
||||||
|
visible: emissionMode == "Grid"
|
||||||
|
opacity: visible?1:0
|
||||||
|
Behavior on opacity{NumberAnimation{}}
|
||||||
|
}
|
||||||
|
ParticleSystem{ id: sys }
|
||||||
|
ModelParticle{
|
||||||
|
system: sys
|
||||||
|
model: vdm
|
||||||
|
}
|
||||||
|
Kill{
|
||||||
|
//TODO: File bug?
|
||||||
|
id: workaround
|
||||||
|
system: sys
|
||||||
|
active: false
|
||||||
|
onActiveChanged: timer.start()
|
||||||
|
Timer{
|
||||||
|
id: timer
|
||||||
|
interval: 32
|
||||||
|
running: false
|
||||||
|
repeat: false
|
||||||
|
onTriggered: workaround.active = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Emitter{
|
||||||
|
system: sys
|
||||||
|
emitting: emissionMode == "Falling"
|
||||||
|
width: parent.width
|
||||||
|
particlesPerSecond: 2
|
||||||
|
particleDuration: 6000
|
||||||
|
speed: PointDirection{y:100;}
|
||||||
|
}
|
||||||
|
Emitter{
|
||||||
|
system: sys
|
||||||
|
emitting: emissionMode == "Bursting"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
particlesPerSecond: 2
|
||||||
|
particleDuration: 6000
|
||||||
|
speed: AngledDirection{magnitude: 60; angleVariation: 360}
|
||||||
|
}
|
||||||
|
Emitter{
|
||||||
|
system: sys
|
||||||
|
emitting: emissionMode == "Shimmering"
|
||||||
|
anchors.fill: parent
|
||||||
|
particlesPerSecond: 4
|
||||||
|
particleDuration: 4000
|
||||||
|
}
|
||||||
|
Row{
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
Button{
|
||||||
|
text:"Grid"
|
||||||
|
onClicked: emissionMode = "Grid";
|
||||||
|
}
|
||||||
|
Button{
|
||||||
|
text:"Fall"
|
||||||
|
onClicked: emissionMode = "Falling";
|
||||||
|
}
|
||||||
|
Button{
|
||||||
|
text:"Burst"
|
||||||
|
onClicked: emissionMode = "Bursting";
|
||||||
|
}
|
||||||
|
Button{
|
||||||
|
text:"Shimmer"
|
||||||
|
onClicked: emissionMode = "Shimmering";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
** All rights reserved.
|
||||||
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||||
|
**
|
||||||
|
** This file is part of the examples of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
|
||||||
|
** the names of its contributors may be used to endorse or promote
|
||||||
|
** products derived from this software without specific prior written
|
||||||
|
** permission.
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
Loader{
|
||||||
|
id: ldr
|
||||||
|
visible: false
|
||||||
|
focus: visible
|
||||||
|
onVisibleChanged: source = ""
|
||||||
|
opacity: visible?1:0
|
||||||
|
Behavior on opacity{NumberAnimation{}}
|
||||||
|
|
||||||
|
function setDemo(str){
|
||||||
|
visible = true;
|
||||||
|
source = str;
|
||||||
|
}
|
||||||
|
Image{//TODO: Augment with PARTICLES
|
||||||
|
z: 1
|
||||||
|
source: "icons/close.png"
|
||||||
|
MouseArea{
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: ldr.visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Rectangle{
|
||||||
|
z: -1
|
||||||
|
anchors.fill: parent
|
||||||
|
color:"black"
|
||||||
|
Text{
|
||||||
|
color: "white"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: ldr.Status == Loader.Error ? "Error :(" : "Loading..."
|
||||||
|
}
|
||||||
|
MouseArea{
|
||||||
|
id: graball
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked:;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 1019 B |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 9.6 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 8.4 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 36 KiB |
|
@ -0,0 +1,8 @@
|
||||||
|
function nameFromPath(path){
|
||||||
|
var ret = path.split('/');
|
||||||
|
return ret[ret.length-1].split('.')[0];
|
||||||
|
}
|
||||||
|
function iconFromPath(path){
|
||||||
|
var ret = path.split('/');
|
||||||
|
return "launcherContent/icons/" + ret[ret.length-1].split('.')[0] + ".png";
|
||||||
|
}
|
|
@ -41,6 +41,7 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import QtQuick.Particles 2.0
|
import QtQuick.Particles 2.0
|
||||||
import "content"
|
import "content"
|
||||||
|
import "../launcherContent" as UI
|
||||||
|
|
||||||
Rectangle{
|
Rectangle{
|
||||||
width: 360
|
width: 360
|
||||||
|
@ -77,15 +78,15 @@ Rectangle{
|
||||||
Row{
|
Row{
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
Button{
|
UI.Button{
|
||||||
text:"dx/dt"
|
text:"dx/dt"
|
||||||
onClicked: wanderer.physics = Wander.Position;
|
onClicked: wanderer.physics = Wander.Position;
|
||||||
}
|
}
|
||||||
Button{
|
UI.Button{
|
||||||
text:"dv/dt"
|
text:"dv/dt"
|
||||||
onClicked: wanderer.physics = Wander.Velocity;
|
onClicked: wanderer.physics = Wander.Velocity;
|
||||||
}
|
}
|
||||||
Button{
|
UI.Button{
|
||||||
text:"da/dt"
|
text:"da/dt"
|
||||||
onClicked: wanderer.physics = Wander.Acceleration;
|
onClicked: wanderer.physics = Wander.Acceleration;
|
||||||
}
|
}
|
||||||
|
|