def emitter_11(): """Burst, emit from center, velocity along a line""" e = arcade.Emitter( pos=CENTER_POS, emit_controller=arcade.EmitBurst(BURST_PARTICLE_COUNT // 4), particle_factory=lambda emitter: arcade.LifetimeParticle( filename_or_texture=TEXTURE, vel=arcade.rand_on_line(Vec2d(-2, 1), Vec2d(2, 1)), lifetime=DEFAULT_PARTICLE_LIFETIME, scale=DEFAULT_SCALE, alpha=DEFAULT_ALPHA)) return emitter_11.__doc__, e
def emitter_25(): """Interval, emit from center, velocity along a line""" e = arcade.Emitter( pos=CENTER_POS, emit_controller=arcade.EmitterIntervalWithTime(DEFAULT_EMIT_INTERVAL, DEFAULT_EMIT_DURATION), particle_factory=lambda emitter: arcade.LifetimeParticle( filename_or_texture=TEXTURE, vel=arcade.rand_on_line(Vec2d(-2, 1), Vec2d(2, 1)), lifetime=DEFAULT_PARTICLE_LIFETIME, scale=DEFAULT_SCALE, alpha=DEFAULT_ALPHA)) return emitter_25.__doc__, e
def emitter_6(): """Burst, emit on line""" e = arcade.Emitter( pos=CENTER_POS, emit_controller=arcade.EmitBurst(BURST_PARTICLE_COUNT), particle_factory=lambda emitter: arcade.LifetimeParticle( filename_or_texture=TEXTURE, vel=arcade.rand_in_circle(Vec2d.zero(), PARTICLE_SPEED_SLOW), lifetime=DEFAULT_PARTICLE_LIFETIME, pos=arcade.rand_on_line(Vec2d.zero(), Vec2d(SCREEN_WIDTH, SCREEN_HEIGHT)), scale=DEFAULT_SCALE, alpha=DEFAULT_ALPHA)) return emitter_6.__doc__, e
def emitter_19(): """Interval, emit on line""" e = arcade.Emitter( pos=Vec2d.zero(), emit_controller=arcade.EmitterIntervalWithTime(DEFAULT_EMIT_INTERVAL, DEFAULT_EMIT_DURATION), particle_factory=lambda emitter: arcade.LifetimeParticle( filename_or_texture=TEXTURE, vel=arcade.rand_in_circle(Vec2d.zero(), PARTICLE_SPEED_SLOW), lifetime=DEFAULT_PARTICLE_LIFETIME, pos=arcade.rand_on_line(Vec2d.zero(), Vec2d(SCREEN_WIDTH, SCREEN_HEIGHT)), scale=DEFAULT_SCALE, alpha=DEFAULT_ALPHA)) return emitter_19.__doc__, e
def dash_emitter_factory(color, pos_a, pos_b): """Interval, emit on line""" logging.info("Creating dash emitter") if pos_a[0] > pos_b[0]: angle = 0 else: angle = 180 textures = [ arcade.Texture(f"{time.time()}", Image.new("RGBA", (10, 10), p)) for p in rand_color(color) ] line_e = arcade.Emitter( center_xy=(0.0, 0.0), emit_controller=arcade.EmitterIntervalWithTime(LINE_EMIT_INTERVAL, DEFAULT_EMIT_DURATION), particle_factory=lambda emitter: arcade.LifetimeParticle( filename_or_texture=random.choice(textures), change_xy=arcade.rand_in_circle((0.0, 0.0), PARTICLE_SPEED_SLOW), lifetime=DEFAULT_PARTICLE_LIFETIME, center_xy=arcade.rand_on_line(pos_a, pos_b), scale=LINE_SCALE, alpha=DEFAULT_ALPHA, ), ) exhaust_plume_e = arcade.Emitter( center_xy=pos_a, emit_controller=arcade.EmitterIntervalWithTime(PLUME_EMIT_INTERVAL, PLUME_EMIT_DURATION), particle_factory=lambda emitter: arcade.FadeParticle( filename_or_texture=random.choice(textures), change_xy=arcade.rand_vec_spread_deg(angle, 25, 4.0), lifetime=PLUME_PARTICLE_LIFETIME, scale=PLUME_SCALE, ), ) return line_e, exhaust_plume_e
def test_rand_on_line(): """Smoke test""" arcade.rand_on_line((-5.5, -2.2), (5.2, 14.7))