1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/examples/fireworks/modules/objects/particle.v

37 lines
780 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) {
ctx.draw_circle_filled(particle.pos.x, get_params().height - particle.pos.y, get_params().particle_radius,
2021-01-27 00:40:30 +03:00
particle.color)
}
pub fn (mut particle Particle) tick(mut rocket Rocket, mut ctx gg.Context) {
2021-01-27 00:40:30 +03:00
particle.lifespan -= get_params().age_rate
2022-04-15 14:58:56 +03:00
particle.color.a = u8(particle.lifespan)
if particle.lifespan <= 0 {
rocket.dead = true
return
}
2021-01-27 00:40:30 +03:00
particle.accel += get_params().gravity
particle.vel += particle.accel
2021-01-27 00:40:30 +03:00
particle.vel = particle.vel.mult(get_params().drag)
particle.pos += particle.vel
particle.draw(mut ctx)
particle.accel = Vector{}
}