 6f5a4d9deb
			
		
	
	
		6f5a4d9deb
		
			
		
	
	
	
	
		
			
			* Renamed add_resource to insert_resource * Changed usage of add_resource to insert_resource * Renamed add_thread_local_resource
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use bevy::{
 | |
|     input::{
 | |
|         keyboard::KeyboardInput,
 | |
|         mouse::{MouseButtonInput, MouseMotion, MouseWheel},
 | |
|     },
 | |
|     prelude::*,
 | |
| };
 | |
| 
 | |
| fn main() {
 | |
|     App::build()
 | |
|         .insert_resource(WindowDescriptor {
 | |
|             width: 300.,
 | |
|             height: 300.,
 | |
|             ..Default::default()
 | |
|         })
 | |
|         .add_plugins(DefaultPlugins)
 | |
|         // One time greet
 | |
|         .add_startup_system(hello_wasm_system.system())
 | |
|         // Track ticks (sanity check, whether game loop is running)
 | |
|         .add_system(counter.system())
 | |
|         // Track input events
 | |
|         .add_system(track_input_events.system())
 | |
|         .run();
 | |
| }
 | |
| 
 | |
| fn hello_wasm_system() {
 | |
|     info!("hello wasm");
 | |
| }
 | |
| 
 | |
| fn counter(mut state: Local<CounterState>, time: Res<Time>) {
 | |
|     if state.count % 60 == 0 {
 | |
|         info!(
 | |
|             "tick {} @ {:?} [Δ{}]",
 | |
|             state.count,
 | |
|             time.time_since_startup(),
 | |
|             time.delta_seconds()
 | |
|         );
 | |
|     }
 | |
|     state.count += 1;
 | |
| }
 | |
| 
 | |
| #[derive(Default)]
 | |
| struct CounterState {
 | |
|     count: u32,
 | |
| }
 | |
| 
 | |
| fn track_input_events(
 | |
|     mut ev_keys: EventReader<KeyboardInput>,
 | |
|     mut ev_cursor: EventReader<CursorMoved>,
 | |
|     mut ev_motion: EventReader<MouseMotion>,
 | |
|     mut ev_mousebtn: EventReader<MouseButtonInput>,
 | |
|     mut ev_scroll: EventReader<MouseWheel>,
 | |
| ) {
 | |
|     // Keyboard input
 | |
|     for ev in ev_keys.iter() {
 | |
|         if ev.state.is_pressed() {
 | |
|             info!("Just pressed key: {:?}", ev.key_code);
 | |
|         } else {
 | |
|             info!("Just released key: {:?}", ev.key_code);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // Absolute cursor position (in window coordinates)
 | |
|     for ev in ev_cursor.iter() {
 | |
|         info!("Cursor at: {}", ev.position);
 | |
|     }
 | |
| 
 | |
|     // Relative mouse motion
 | |
|     for ev in ev_motion.iter() {
 | |
|         info!("Mouse moved {} pixels", ev.delta);
 | |
|     }
 | |
| 
 | |
|     // Mouse buttons
 | |
|     for ev in ev_mousebtn.iter() {
 | |
|         if ev.state.is_pressed() {
 | |
|             info!("Just pressed mouse button: {:?}", ev.button);
 | |
|         } else {
 | |
|             info!("Just released mouse button: {:?}", ev.button);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // scrolling (mouse wheel, touchpad, etc.)
 | |
|     for ev in ev_scroll.iter() {
 | |
|         info!(
 | |
|             "Scrolled vertically by {} and horizontally by {}.",
 | |
|             ev.y, ev.x
 | |
|         );
 | |
|     }
 | |
| }
 |