Crates.io | bevy_ui_pointer_capture_detector |
lib.rs | bevy_ui_pointer_capture_detector |
version | 0.3.1 |
source | src |
created_at | 2022-06-14 00:04:49.372741 |
updated_at | 2022-11-25 13:24:17.774074 |
description | a Bevy plugin that detects when the mouse pointer is over a UI node |
homepage | |
repository | https://github.com/ickshonpe/bevy_ui_pointer_capture_detector |
max_upload_size | |
id | 605445 |
size | 534,440 |
A plugin that detects if the mouse pointer is above a Bevy Ui Node.
In your Cargo.toml
[dependencies]
section, add
bevy_ui_pointer_capture_detector = "0.3"
This example draws a square red UI node. Each update it sets the color of the background depending on if the mouse pointer is over the red node:
use bevy::prelude::*;
use bevy_ui_pointer_capture_detector::*;
fn setup(
mut commands: Commands
) {
commands
.spawn(Camera2dBundle::default())
.commands()
.spawn(NodeBundle {
style: Style {
margin: UiRect {
left: Val::Px(100.0),
bottom: Val::Px(100.0),
right: Val::Auto,
top: Val::Auto
},
size: Size {
width: Val::Px(100.0),
height: Val::Px(100.0)
},
..Default::default()
},
background_color: BackgroundColor(Color::RED),
..Default::default()
});
}
fn is_pointer_captured(
capture: Res<UiPointerCaptureStatus>,
mut clear_color: ResMut<ClearColor>,
) {
clear_color.0 = if capture.is_captured() {
Color::DARK_GRAY
} else {
Color::WHITE
};
}
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(BevyUiPointerCaptureDetectorPlugin)
.add_startup_system(setup)
.add_system(is_pointer_captured)
.run();
}
cargo run --example example
cargo run --example minimal