Add comments to examples and fix example_showcase script timing

This commit is contained in:
Carter Anderson 2020-04-06 21:32:19 -07:00
parent 67b9d182ed
commit bd97da3a51
10 changed files with 33 additions and 11 deletions

View File

@ -13,6 +13,7 @@ fn main() {
.run(); .run();
} }
// sends MyEvent every second
fn event_trigger_system() -> Box<dyn Schedulable> { fn event_trigger_system() -> Box<dyn Schedulable> {
let mut elapsed = 0.0; let mut elapsed = 0.0;
SystemBuilder::new("event_trigger") SystemBuilder::new("event_trigger")
@ -30,6 +31,7 @@ fn event_trigger_system() -> Box<dyn Schedulable> {
}) })
} }
// prints events as they come in
fn event_listener_system(resources: &mut Resources) -> Box<dyn Schedulable> { fn event_listener_system(resources: &mut Resources) -> Box<dyn Schedulable> {
let mut my_event_reader = resources.get_event_reader::<MyEvent>(); let mut my_event_reader = resources.get_event_reader::<MyEvent>();
SystemBuilder::new("event_listener") SystemBuilder::new("event_listener")

View File

@ -12,7 +12,7 @@ use std::time::Duration;
// bevy = { version = "0.1.0", default-features = false, features = ["headless"] } // bevy = { version = "0.1.0", default-features = false, features = ["headless"] }
fn main() { fn main() {
println!("This app runs once:"); // this app runs once
App::build() App::build()
.add_plugin(ScheduleRunnerPlugin { .add_plugin(ScheduleRunnerPlugin {
run_mode: RunMode::Once, run_mode: RunMode::Once,
@ -20,7 +20,7 @@ fn main() {
.add_system(hello_world_system()) .add_system(hello_world_system())
.run(); .run();
println!("This app loops forever at 60 fps:"); // this app loops forever at 60 fps
App::build() App::build()
.add_plugin(ScheduleRunnerPlugin { .add_plugin(ScheduleRunnerPlugin {
run_mode: RunMode::Loop { run_mode: RunMode::Loop {

View File

@ -11,6 +11,7 @@ fn main() {
.run(); .run();
} }
/// moves our cube left when the "left" key is pressed. moves it right when the "right" key is pressed
pub fn move_on_input_system(resources: &mut Resources) -> Box<dyn Schedulable> { pub fn move_on_input_system(resources: &mut Resources) -> Box<dyn Schedulable> {
let mut keyboard_input_event_reader = resources.get_event_reader::<KeyboardInput>(); let mut keyboard_input_event_reader = resources.get_event_reader::<KeyboardInput>();
let mut moving_left = false; let mut moving_left = false;
@ -54,6 +55,7 @@ pub fn move_on_input_system(resources: &mut Resources) -> Box<dyn Schedulable> {
) )
} }
/// creates a simple scene
fn setup(world: &mut World, resources: &mut Resources) { fn setup(world: &mut World, resources: &mut Resources) {
let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap(); let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap();
let mut material_storage = resources let mut material_storage = resources

View File

@ -10,6 +10,7 @@ fn main() {
.run(); .run();
} }
/// prints out mouse events as they come in
pub fn mouse_input_system(resources: &mut Resources) -> Box<dyn Schedulable> { pub fn mouse_input_system(resources: &mut Resources) -> Box<dyn Schedulable> {
let mut mouse_button_input_event_reader = resources.get_event_reader::<MouseButtonInput>(); let mut mouse_button_input_event_reader = resources.get_event_reader::<MouseButtonInput>();
let mut mouse_motion_event_reader = resources.get_event_reader::<MouseMotion>(); let mut mouse_motion_event_reader = resources.get_event_reader::<MouseMotion>();

View File

@ -5,6 +5,7 @@ fn main() {
} }
fn setup(_world: &mut World, resources: &mut Resources) { fn setup(_world: &mut World, resources: &mut Resources) {
// sends out a "CreateWindow" event, which will be received by the windowing backend
let mut create_window_events = resources.get_mut::<Events<CreateWindow>>().unwrap(); let mut create_window_events = resources.get_mut::<Events<CreateWindow>>().unwrap();
create_window_events.send(CreateWindow { create_window_events.send(CreateWindow {
descriptor: WindowDescriptor { descriptor: WindowDescriptor {

View File

@ -10,7 +10,7 @@ fn main() {
.run(); .run();
} }
// rotates the parent, which will result in the child also rotating /// rotates the parent, which will result in the child also rotating
fn build_rotator_system() -> Box<dyn Schedulable> { fn build_rotator_system() -> Box<dyn Schedulable> {
SystemBuilder::new("rotator") SystemBuilder::new("rotator")
.read_resource::<Time>() .read_resource::<Time>()
@ -22,6 +22,7 @@ fn build_rotator_system() -> Box<dyn Schedulable> {
}) })
} }
/// set up a simple scene with a "parent" cube and a "child" cube
fn setup(world: &mut World, resources: &mut Resources) { fn setup(world: &mut World, resources: &mut Resources) {
let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap(); let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap();
let mut material_storage = resources let mut material_storage = resources
@ -45,7 +46,7 @@ fn setup(world: &mut World, resources: &mut Resources) {
}) })
.add(Rotator) .add(Rotator)
.add_children(|builder| { .add_children(|builder| {
// cube // child cube
builder.add_entity(MeshEntity { builder.add_entity(MeshEntity {
mesh: cube_handle, mesh: cube_handle,
material: cube_material_handle, material: cube_material_handle,

View File

@ -4,23 +4,27 @@ fn main() {
App::build().add_default_plugins().setup(setup).run(); App::build().add_default_plugins().setup(setup).run();
} }
/// set up a simple scene
fn setup(world: &mut World, resources: &mut Resources) { fn setup(world: &mut World, resources: &mut Resources) {
// create a cube and a plane mesh
let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap(); let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap();
let cube_handle = mesh_storage.add(Mesh::load(MeshType::Cube));
let plane_handle = mesh_storage.add(Mesh::load(MeshType::Plane { size: 10.0 }));
// create materials for our cube and plane
let mut material_storage = resources let mut material_storage = resources
.get_mut::<AssetStorage<StandardMaterial>>() .get_mut::<AssetStorage<StandardMaterial>>()
.unwrap(); .unwrap();
let cube_handle = mesh_storage.add(Mesh::load(MeshType::Cube));
let plane_handle = mesh_storage.add(Mesh::load(MeshType::Plane { size: 10.0 }));
let cube_material_handle = material_storage.add(StandardMaterial { let cube_material_handle = material_storage.add(StandardMaterial {
albedo: Color::rgb(0.5, 0.4, 0.3), albedo: Color::rgb(0.5, 0.4, 0.3),
..Default::default() ..Default::default()
}); });
let plane_material_handle = material_storage.add(StandardMaterial { let plane_material_handle = material_storage.add(StandardMaterial {
albedo: Color::rgb(0.1, 0.2, 0.1), albedo: Color::rgb(0.1, 0.2, 0.1),
..Default::default() ..Default::default()
}); });
// add entities to the world
world world
.build() .build()
// plane // plane

View File

@ -7,8 +7,11 @@ fn main() {
.run(); .run();
} }
/// Set up a simple scene using a "startup system".
/// Startup systems are run exactly once when the app starts up.
/// They run right before "normal" systems run.
pub fn startup_system() -> Box<dyn Schedulable> { pub fn startup_system() -> Box<dyn Schedulable> {
SystemBuilder::new("setup") SystemBuilder::new("startup")
.write_resource::<AssetStorage<Mesh>>() .write_resource::<AssetStorage<Mesh>>()
.write_resource::<AssetStorage<StandardMaterial>>() .write_resource::<AssetStorage<StandardMaterial>>()
.build(move |command_buffer, _, (meshes, materials), _| { .build(move |command_buffer, _, (meshes, materials), _| {

View File

@ -4,7 +4,9 @@ fn main() {
App::build().add_default_plugins().setup(setup).run(); App::build().add_default_plugins().setup(setup).run();
} }
/// sets up a scene with textured entities
fn setup(world: &mut World, resources: &mut Resources) { fn setup(world: &mut World, resources: &mut Resources) {
// load a texture
let mut texture_storage = resources.get_mut::<AssetStorage<Texture>>().unwrap(); let mut texture_storage = resources.get_mut::<AssetStorage<Texture>>().unwrap();
let texture = Texture::load(TextureType::Png( let texture = Texture::load(TextureType::Png(
concat!(env!("CARGO_MANIFEST_DIR"), "/assets/bevy_logo_dark_big.png").to_string(), concat!(env!("CARGO_MANIFEST_DIR"), "/assets/bevy_logo_dark_big.png").to_string(),
@ -12,30 +14,35 @@ fn setup(world: &mut World, resources: &mut Resources) {
let aspect = texture.height as f32 / texture.width as f32; let aspect = texture.height as f32 / texture.width as f32;
let texture_handle = texture_storage.add(texture); let texture_handle = texture_storage.add(texture);
// create a new quad mesh. this is what we will apply the texture to
let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap(); let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap();
let quad_width = 8.0; let quad_width = 8.0;
let quad_handle = mesh_storage.add(Mesh::load(MeshType::Quad { let quad_handle = mesh_storage.add(Mesh::load(MeshType::Quad {
size: Vec2::new(quad_width, quad_width * aspect), size: Vec2::new(quad_width, quad_width * aspect),
})); }));
// create materials that use our new texture
let mut material_storage = resources let mut material_storage = resources
.get_mut::<AssetStorage<StandardMaterial>>() .get_mut::<AssetStorage<StandardMaterial>>()
.unwrap(); .unwrap();
// this material renders the texture normally
let material_handle = material_storage.add(StandardMaterial { let material_handle = material_storage.add(StandardMaterial {
albedo_texture: Some(texture_handle), albedo_texture: Some(texture_handle),
..Default::default() ..Default::default()
}); });
// this material modulates the texture to make it red
let modulated_material_handle = material_storage.add(StandardMaterial { let modulated_material_handle = material_storage.add(StandardMaterial {
albedo: Color::rgba(1.0, 0.0, 0.0, 0.5), albedo: Color::rgba(1.0, 0.0, 0.0, 0.5),
albedo_texture: Some(texture_handle), albedo_texture: Some(texture_handle),
..Default::default() ..Default::default()
}); });
// add entities to the world
world world
.build() .build()
// textured quad // textured quad - normal
.add_entity(MeshEntity { .add_entity(MeshEntity {
mesh: quad_handle, mesh: quad_handle,
material: material_handle, material: material_handle,
@ -43,7 +50,7 @@ fn setup(world: &mut World, resources: &mut Resources) {
rotation: Rotation::from_euler_angles(0.0, std::f32::consts::PI / 3.0, 0.0), rotation: Rotation::from_euler_angles(0.0, std::f32::consts::PI / 3.0, 0.0),
..Default::default() ..Default::default()
}) })
// textured quad modulated // textured quad - modulated
.add_entity(MeshEntity { .add_entity(MeshEntity {
mesh: quad_handle, mesh: quad_handle,
material: modulated_material_handle, material: modulated_material_handle,

View File

@ -1,7 +1,8 @@
#!/bin/bash #!/bin/bash
duration='3' duration='2'
run_example() { run_example() {
cargo build --example $1
timeout "$duration" cargo run --example $1 timeout "$duration" cargo run --example $1
} }