class IMICRTS class SmokeEmitter < ParticleEmitter def setup @time_to_live = Float::INFINITY @particle_time_to_live = 2_500 @frequency = 4.0 @color = Gosu::Color.rgba(255, 255, 255, 255.0 * 0.4) @direction = CyberarmEngine::Vector.up @direction.y = 4.5 @jitter = 25.0 @images = Gosu::Image.load_tiles("#{IMICRTS::ASSETS_PATH}/smoke/smoke.png", 32, 32, retro: false) end def emit super @particles.last.factor = CyberarmEngine::Vector.new(0.1, 0.1) end def update super @particles.each do |particle| life_cycle = (Gosu.milliseconds - particle.born_at.to_f) / particle.time_to_live scale = (2.0 * life_cycle) + 0.25 particle.factor.x = scale particle.factor.y = scale particle.color.alpha = ((255.0 * (1.0 - life_cycle)) - 255.0 * 0.4).clamp(0.0, 255.0) particle.angle += rand(0.1..0.5) particle.direction.x = Math.cos(Gosu.milliseconds / 1_000.0) * 0.162 end end end end