use nightshade_api::prelude::*;
struct State {
emitter: Entity,
alternate: bool,
}
fn main() {
run(
|world| {
set_background(world, Background::Space);
show_grid(world, false);
set_bloom(world, true);
spawn_floor(world, 16.0);
emit_fire(world, vec3(-6.0, 0.5, 0.0));
emit_smoke(world, vec3(-3.0, 0.5, 0.0));
emit_sparks(world, vec3(0.0, 0.5, 0.0));
emit_burst(world, vec3(3.0, 0.5, 0.0), ORANGE, 120);
emit_firework(world, vec3(6.0, 0.5, 0.0), vec3(0.0, 8.0, 0.0));
emit_particles(
world,
vec3(0.0, 0.5, 4.0),
60.0,
2.0,
0.2,
vec3(0.0, -2.0, 0.0),
);
spawn_particle_emitter(world, ParticleEmitter::fire(vec3(-6.0, 0.5, -4.0)));
spawn_particle_emitter(world, ParticleEmitter::smoke(vec3(-3.0, 0.5, -4.0)));
spawn_particle_emitter(world, ParticleEmitter::sparks(vec3(0.0, 0.5, -4.0)));
let emitter = spawn_particle_emitter(
world,
ParticleEmitter::firework_explosion(vec3(3.0, 3.0, -4.0), vec3(1.0, 0.6, 0.2), 200),
);
spawn_text(world, "space: retrigger firework", ScreenAnchor::TopLeft);
orbit_camera(world, vec3(0.0, 2.0, 0.0), 16.0);
State {
emitter,
alternate: false,
}
},
|world, state| {
if key_pressed(world, KeyCode::Space) {
state.alternate = !state.alternate;
let color = if state.alternate {
vec3(0.3, 0.7, 1.0)
} else {
vec3(1.0, 0.6, 0.2)
};
set_emitter(
world,
state.emitter,
ParticleEmitter::firework_explosion(vec3(3.0, 3.0, -4.0), color, 300),
);
}
},
)
.unwrap();
}