aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2011-07-20 13:46:52 +1000
committerQt by Nokia <qt-info@nokia.com>2011-07-28 11:27:26 +0200
commit0511dfc0b8851baf84df73780e770f1025261068 (patch)
tree65a9acb210ff5197c2c3f11edac594a124bfc206 /examples
parent8fda8d16df9744b69a97020e3aae1ad40ff1f538 (diff)
Initial CustomEmitter and CustomAffector implementation
Currently basic and can't access all properties. Change-Id: I66efc235112cffcf1a3ca5cc69099a5d09ec7691 Reviewed-on: http://codereview.qt.nokia.com/1950 Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/declarative/particles/custom/content/backgroundLeaves.jpgbin0 -> 78665 bytes
-rw-r--r--examples/declarative/particles/custom/content/realLeaf1.pngbin0 -> 14043 bytes
-rw-r--r--examples/declarative/particles/custom/content/realLeaf2.pngbin0 -> 12452 bytes
-rw-r--r--examples/declarative/particles/custom/content/realLeaf3.pngbin0 -> 21930 bytes
-rw-r--r--examples/declarative/particles/custom/content/realLeaf4.pngbin0 -> 21020 bytes
-rw-r--r--examples/declarative/particles/custom/custom.qml100
-rw-r--r--examples/declarative/particles/custom/fallingleaves.qml97
-rw-r--r--examples/declarative/particles/exampleslauncher.qml2
-rw-r--r--examples/declarative/particles/launcherContent/icons/custom.pngbin0 -> 22967 bytes
-rw-r--r--examples/declarative/particles/launcherContent/icons/fallingleaves.pngbin0 -> 10350 bytes
10 files changed, 199 insertions, 0 deletions
diff --git a/examples/declarative/particles/custom/content/backgroundLeaves.jpg b/examples/declarative/particles/custom/content/backgroundLeaves.jpg
new file mode 100755
index 0000000000..08be16751d
--- /dev/null
+++ b/examples/declarative/particles/custom/content/backgroundLeaves.jpg
Binary files differ
diff --git a/examples/declarative/particles/custom/content/realLeaf1.png b/examples/declarative/particles/custom/content/realLeaf1.png
new file mode 100644
index 0000000000..1ec184a86c
--- /dev/null
+++ b/examples/declarative/particles/custom/content/realLeaf1.png
Binary files differ
diff --git a/examples/declarative/particles/custom/content/realLeaf2.png b/examples/declarative/particles/custom/content/realLeaf2.png
new file mode 100644
index 0000000000..8ab84cd9e2
--- /dev/null
+++ b/examples/declarative/particles/custom/content/realLeaf2.png
Binary files differ
diff --git a/examples/declarative/particles/custom/content/realLeaf3.png b/examples/declarative/particles/custom/content/realLeaf3.png
new file mode 100644
index 0000000000..f1f3ea96e6
--- /dev/null
+++ b/examples/declarative/particles/custom/content/realLeaf3.png
Binary files differ
diff --git a/examples/declarative/particles/custom/content/realLeaf4.png b/examples/declarative/particles/custom/content/realLeaf4.png
new file mode 100644
index 0000000000..51bde09685
--- /dev/null
+++ b/examples/declarative/particles/custom/content/realLeaf4.png
Binary files differ
diff --git a/examples/declarative/particles/custom/custom.qml b/examples/declarative/particles/custom/custom.qml
new file mode 100644
index 0000000000..393870527f
--- /dev/null
+++ b/examples/declarative/particles/custom/custom.qml
@@ -0,0 +1,100 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+ParticleSystem{
+ id: sys
+ width: 360
+ height: 600
+ Rectangle{
+ z: -1
+ anchors.fill: parent
+ color: "black"
+ Text{
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.pixelSize: 42
+ color: "white"
+ text: "It's all in QML."
+ }
+ }
+ property real petalLength: 180
+ property real petalRotation: 0
+ NumberAnimation on petalRotation{
+ from: 0;
+ to: 360;
+ loops: -1;
+ running: true
+ duration: 24000
+ }
+ function convert(a){return a*(Math.PI/180);}
+ CustomEmitter{
+ lifeSpan: 4000
+ emitRate: 120
+ size: 12
+ anchors.centerIn: parent
+ onEmitParticle:{
+ particle.size = Math.max(12,Math.min(492,Math.tan(particle.t/2)*24));
+ var theta = Math.floor(Math.random() * 6.0) / 6.0;
+ theta *= 2.0*Math.PI;
+ theta += sys.convert(sys.petalRotation);
+ particle.sx = petalLength * Math.cos(theta);
+ particle.sy = petalLength * Math.sin(theta);
+ particle.ax = particle.sx * -0.5;
+ particle.ay = particle.sy * -0.5;
+ }
+ }
+ CustomParticle{
+ //TODO: Someway that you don't have to rewrite the basics for a simple addition
+ 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
+
+ uniform highp mat4 qt_ModelViewProjectionMatrix;
+ uniform highp float timestamp;
+ uniform lowp float qt_Opacity;
+
+ varying highp vec2 fTex;
+ varying lowp float fFade;
+ varying highp vec2 fPos;
+
+ void main() {
+ fTex = vTex;
+ 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 * 20., 1.);
+ highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.));
+
+ fFade = fadeIn * fadeOut * qt_Opacity;
+ fPos = vec2(pos.x/360.0, pos.y/600.0);
+ }
+ "
+ fragmentShader: "
+ varying highp vec2 fPos;
+ varying lowp float fFade;
+ varying highp vec2 fTex;
+ void main() {//*2 because this generates dark colors mostly
+ highp vec2 circlePos = fTex*2.0 - vec2(1.0,1.0);
+ highp float dist = length(circlePos);
+ highp float circleFactor = max(min(1.0 - dist, 1.0), 0.0);
+ gl_FragColor = vec4(fPos.x*2.0 - fPos.y, fPos.y*2.0 - fPos.x, fPos.x*fPos.y*2.0, 0.0) * circleFactor * fFade;
+ }"
+
+ }
+}
diff --git a/examples/declarative/particles/custom/fallingleaves.qml b/examples/declarative/particles/custom/fallingleaves.qml
new file mode 100644
index 0000000000..e41d214594
--- /dev/null
+++ b/examples/declarative/particles/custom/fallingleaves.qml
@@ -0,0 +1,97 @@
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+
+Item {
+ width: 360
+ height: 600
+
+ Image{
+ source: "content/backgroundLeaves.jpg"
+ anchors.fill: parent
+ }
+ ParticleSystem{ id: sys }
+ Emitter{
+ system: sys
+ width: parent.width
+ emitRate: 6
+ lifeSpan: 12000
+ size: 80
+ speed: PointDirection{ y: 60 }
+ }
+ Wander {
+ system: sys
+ anchors.fill: parent
+ xVariance: 60
+ pace: 60
+ }
+ CustomAffector{
+ system: sys
+ property real coefficient: 0.5
+ property real speed: 10.0
+ onAffectParticle:{
+ /* //Linear movement
+ if (particle.r == 0){
+ particle.r = Math.random() > 0.5 ? -1 : 1;
+ }else if (particle.r == 1){
+ particle.rotation += speed * dt;
+ if(particle.rotation >= maxAngle)
+ particle.r = -1;
+ }else if (particle.r == -1){
+ particle.rotation -= speed * dt;
+ if(particle.rotation <= -1 * maxAngle)
+ particle.r = 1;
+ }
+ */
+ //Wobbly movement
+ if (particle.r == 0.0){
+ particle.r = Math.random() + 0.01;
+ }
+ particle.rotation += speed * particle.r * dt;
+ particle.r -= particle.rotation * coefficient;
+ if (particle.r == 0.0)
+ particle.r -= particle.rotation * 0.000001;
+ }
+ }
+
+ ImageParticle{
+ anchors.fill: parent
+ id: particles
+ system: sys
+ sprites: [Sprite{
+ source: "content/realLeaf1.png"
+ frames: 1
+ duration: 1
+ to: {"a":1, "b":1, "c":1, "d":1}
+ }, Sprite{
+ name: "a"
+ source: "content/realLeaf1.png"
+ frames: 1
+ duration: 10000
+ },
+ Sprite{
+ name: "b"
+ source: "content/realLeaf2.png"
+ frames: 1
+ duration: 10000
+ },
+ Sprite{
+ name: "c"
+ source: "content/realLeaf3.png"
+ frames: 1
+ duration: 10000
+ },
+ Sprite{
+ name: "d"
+ source: "content/realLeaf4.png"
+ frames: 1
+ duration: 10000
+ }
+ ]
+
+ width: 100
+ height: 100
+ x: 20
+ y: 20
+ z:4
+ }
+}
diff --git a/examples/declarative/particles/exampleslauncher.qml b/examples/declarative/particles/exampleslauncher.qml
index 5d2f49e8e1..7bdd3af51f 100644
--- a/examples/declarative/particles/exampleslauncher.qml
+++ b/examples/declarative/particles/exampleslauncher.qml
@@ -60,6 +60,8 @@ Rectangle{
"../asteroid/asteroid.qml",
"../asteroid/blackhole.qml",
"../custom/blurparticles.qml",
+ "../custom/custom.qml",
+ "../custom/fallingleaves.qml",
"../modelparticles/bubbles.qml",
"../modelparticles/gridsplosion.qml",
"../modelparticles/package.qml",
diff --git a/examples/declarative/particles/launcherContent/icons/custom.png b/examples/declarative/particles/launcherContent/icons/custom.png
new file mode 100644
index 0000000000..6d492573d1
--- /dev/null
+++ b/examples/declarative/particles/launcherContent/icons/custom.png
Binary files differ
diff --git a/examples/declarative/particles/launcherContent/icons/fallingleaves.png b/examples/declarative/particles/launcherContent/icons/fallingleaves.png
new file mode 100644
index 0000000000..d02e7918fa
--- /dev/null
+++ b/examples/declarative/particles/launcherContent/icons/fallingleaves.png
Binary files differ