aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/old/examples/fireworks/modules/objects/particle.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/old/examples/fireworks/modules/objects/particle.v')
-rw-r--r--v_windows/v/old/examples/fireworks/modules/objects/particle.v36
1 files changed, 36 insertions, 0 deletions
diff --git a/v_windows/v/old/examples/fireworks/modules/objects/particle.v b/v_windows/v/old/examples/fireworks/modules/objects/particle.v
new file mode 100644
index 0000000..8f84a39
--- /dev/null
+++ b/v_windows/v/old/examples/fireworks/modules/objects/particle.v
@@ -0,0 +1,36 @@
+module objects
+
+import gg
+import gx
+
+pub struct Particle {
+pub mut:
+ color gx.Color
+ pos Vector
+ vel Vector
+ accel Vector
+ lifespan f32 = 255
+}
+
+pub fn (particle Particle) draw(mut ctx gg.Context) {
+ ctx.draw_circle(particle.pos.x, get_params().height - particle.pos.y, get_params().particle_radius,
+ particle.color)
+}
+
+pub fn (mut particle Particle) tick(mut rocket Rocket, mut ctx gg.Context) {
+ particle.lifespan -= get_params().age_rate
+ particle.color.a = byte(particle.lifespan)
+
+ if particle.lifespan <= 0 {
+ rocket.dead = true
+ return
+ }
+
+ particle.accel += get_params().gravity
+ particle.vel += particle.accel
+ particle.vel = particle.vel.mult(get_params().drag)
+ particle.pos += particle.vel
+ particle.draw(mut ctx)
+
+ particle.accel = Vector{}
+}