action_nitro: prettier particles
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 26 Jun 2017 18:09:53 +0000 (14:09 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Wed, 28 Jun 2017 16:55:54 +0000 (12:55 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/action_nitro/art/icon.svg
contrib/action_nitro/art/icon_background.png [new file with mode: 0644]
contrib/action_nitro/assets/particles/blood07.png
contrib/action_nitro/assets/particles/explosion00.png
contrib/action_nitro/src/action_nitro.nit

index 7383208..a0701e1 100644 (file)
@@ -60,8 +60,8 @@
      id="layer1"
      transform="translate(-286.05811,81.477047)">
     <image
-       sodipodi:absref="/home/xymus/projects/nit/contrib/action_nitro/art/../assets/particles/explosion00.png"
-       xlink:href="../assets/particles/explosion00.png"
+       sodipodi:absref="icon_background.png"
+       xlink:href="icon_background.png"
        width="479.1073"
        height="439.72864"
        id="image3062"
diff --git a/contrib/action_nitro/art/icon_background.png b/contrib/action_nitro/art/icon_background.png
new file mode 100644 (file)
index 0000000..22529ca
Binary files /dev/null and b/contrib/action_nitro/art/icon_background.png differ
index 584e6d1..4c590d5 100644 (file)
Binary files a/contrib/action_nitro/assets/particles/blood07.png and b/contrib/action_nitro/assets/particles/blood07.png differ
index 22529ca..16a484f 100644 (file)
Binary files a/contrib/action_nitro/assets/particles/explosion00.png and b/contrib/action_nitro/assets/particles/explosion00.png differ
index 4fdf39e..bd0e6ff 100644 (file)
@@ -80,11 +80,11 @@ redef class App
        # Particle effects
 
        # Explosion particles
-       var explosions = new ParticleSystem(20, explosion_program,
+       var explosions = new ParticleSystem(100, explosion_program,
                new Texture("particles/explosion00.png"))
 
        # Blood explosion particles
-       var blood = new ParticleSystem(20, explosion_program,
+       var blood = new ParticleSystem(100, explosion_program,
                new Texture("particles/blood07.png"))
 
        # Smoke for the background
@@ -137,6 +137,9 @@ redef class App
 
        redef fun on_create
        do
+               blood.texture.as(RootTexture).premultiply_alpha = false
+               explosions.texture.as(RootTexture).premultiply_alpha = false
+
                super
 
                show_splash_screen new Texture("textures/splash.jpg")
@@ -150,10 +153,10 @@ redef class App
                ui_camera.reset_height 1080.0
 
                # Register particle systems
-               particle_systems.add explosions
-               particle_systems.add blood
                particle_systems.add smoke
                particle_systems.add clouds
+               particle_systems.add blood
+               particle_systems.add explosions
 
                # Stars background
                sprites.add stars
@@ -468,12 +471,12 @@ redef class Human
        # Show death animation (explosion)
        fun death_animation
        do
-               var force = 4.0
+               var force = 2.0
                health = 0.0
-               for i in 32.times do
+               for i in 16.times do
                        app.blood.add(
                                new Point3d[Float](center.x & force, center.y & force, center.z & force),
-                               (2048.0 & 4096.0) * force, 0.3 & 0.1)
+                               (4096.0 & 2048.0) * force, 0.3 & 0.1)
                end
        end
 end
@@ -622,11 +625,12 @@ redef class World
                super
 
                # Particles
-               app.explosions.add(center, 8192.0 * force, 0.3)
-               for i in (4.0*force).to_i.times do
+               var range = 0.5 * force
+               app.explosions.add(center, 4096.0 * force, 0.3)
+               for i in (2.0*force).to_i.times do
                        app.explosions.add(
-                               new Point3d[Float](center.x & force, center.y & force/2.0, center.z & force),
-                               (4096.0 & 2048.0) * force, 0.3 & 0.3, 0.5.rand)
+                               new Point3d[Float](center.x & range, center.y & range, center.z & range),
+                               (2048.0 & 1024.0) * force, 0.3 & 0.3, 0.5.rand)
                end
        end
 end
@@ -694,8 +698,8 @@ redef class SmokeProgram
                gl_PointSize = scale / gl_Position.z * (pt+0.1);
 
                if (pt < 0.1)
-                       v_color.a = pt / 0.1;
+                       v_color *= pt / 0.1;
                else
-                       v_color.a = 1.0 - pt*0.9;
+                       v_color *= 1.0 - pt*0.9;
        """
 end