use bevy::{ prelude::*, app::AppExit, diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}, }; use heron::prelude::*; mod camera; mod map; mod player; #[derive(PhysicsLayer)] pub enum Layer { Map, Player, } fn main() { App::new() .add_plugin(LogDiagnosticsPlugin::default()) .add_plugin(FrameTimeDiagnosticsPlugin::default()) .add_plugins(DefaultPlugins) .add_plugin(PhysicsPlugin::default()) .insert_resource(Gravity::from(Vec3::new(0.0, -9.81, 0.0))) .insert_resource(ClearColor(Color::rgb(0.7, 0.7, 1.0))) .add_startup_system(camera::setup) .add_system(camera::track_players) .add_startup_system(map::setup) .add_system(map::build) .add_system(map::collide) .add_startup_system(player::setup) .add_system(player::input) .add_system(exit_on_escape) .add_system(log_collisions) // .add_system(keyboard_input_camera) .run(); } fn exit_on_escape(keyboard_input: Res>, mut exit: EventWriter) { if keyboard_input.pressed(KeyCode::Escape) { exit.send(AppExit); } } fn log_collisions(mut events: EventReader) { for event in events.iter() { match event { CollisionEvent::Started(d1, d2) => { println!("Collision started between {:?} and {:?}", d1, d2) } CollisionEvent::Stopped(d1, d2) => { println!("Collision stopped between {:?} and {:?}", d1, d2) } } } }