# Objective - Add the `AccumulatedMouseMotion` and `AccumulatedMouseScroll` resources to make it simpler to track mouse motion/scroll changes - Closes #13915 ## Solution - Created two resources, `AccumulatedMouseMotion` and `AccumulatedMouseScroll`, and a method that tracks the `MouseMotion` and `MouseWheel` events and accumulates their deltas every frame. - Also modified the mouse input example to show how to use the resources. ## Testing - Tested the changes by modifying an existing example to use the newly added resources, and moving/scrolling my trackpad around a ton. --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com> Co-authored-by: Gino Valente <49806985+MrGVSV@users.noreply.github.com>
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //! Prints mouse button events.
 | |
| 
 | |
| use bevy::{
 | |
|     input::mouse::{AccumulatedMouseMotion, AccumulatedMouseScroll},
 | |
|     prelude::*,
 | |
| };
 | |
| 
 | |
| fn main() {
 | |
|     App::new()
 | |
|         .add_plugins(DefaultPlugins)
 | |
|         .add_systems(Update, (mouse_click_system, mouse_move_system))
 | |
|         .run();
 | |
| }
 | |
| 
 | |
| // This system prints messages when you press or release the left mouse button:
 | |
| fn mouse_click_system(mouse_button_input: Res<ButtonInput<MouseButton>>) {
 | |
|     if mouse_button_input.pressed(MouseButton::Left) {
 | |
|         info!("left mouse currently pressed");
 | |
|     }
 | |
| 
 | |
|     if mouse_button_input.just_pressed(MouseButton::Left) {
 | |
|         info!("left mouse just pressed");
 | |
|     }
 | |
| 
 | |
|     if mouse_button_input.just_released(MouseButton::Left) {
 | |
|         info!("left mouse just released");
 | |
|     }
 | |
| }
 | |
| 
 | |
| // This system prints messages when you finish dragging or scrolling with your mouse
 | |
| fn mouse_move_system(
 | |
|     accumulated_mouse_motion: Res<AccumulatedMouseMotion>,
 | |
|     accumulated_mouse_scroll: Res<AccumulatedMouseScroll>,
 | |
| ) {
 | |
|     if accumulated_mouse_motion.delta != Vec2::ZERO {
 | |
|         let delta = accumulated_mouse_motion.delta;
 | |
|         info!("mouse moved ({}, {})", delta.x, delta.y);
 | |
|     }
 | |
|     if accumulated_mouse_scroll.delta != Vec2::ZERO {
 | |
|         let delta = accumulated_mouse_scroll.delta;
 | |
|         info!("mouse scrolled ({}, {})", delta.x, delta.y);
 | |
|     }
 | |
| }
 |