v/examples/fireworks/modules/objects/particle.v

37 lines
775 B
V
Raw Normal View History

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) {
2021-01-26 22:40:30 +01:00
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) {
2021-01-26 22:40:30 +01:00
particle.lifespan -= get_params().age_rate
particle.color.a = byte(particle.lifespan)
if particle.lifespan <= 0 {
rocket.dead = true
return
}
2021-01-26 22:40:30 +01:00
particle.accel += get_params().gravity
particle.vel += particle.accel
2021-01-26 22:40:30 +01:00
particle.vel = particle.vel.mult(get_params().drag)
particle.pos += particle.vel
particle.draw(mut ctx)
particle.accel = Vector{}
}