mirror of
https://github.com/bevyengine/bevy
synced 2024-12-22 11:03:06 +00:00
6dcff2bfe8
# 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>
43 lines
1.3 KiB
Rust
43 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);
|
|
}
|
|
}
|