11 releases (6 stable)
2.0.0 | Mar 17, 2024 |
---|---|
1.0.4 | Dec 26, 2022 |
0.1.4 | Dec 23, 2022 |
#1639 in Procedural macros
402 downloads per month
Used in bevy_ecs_markers
4KB
72 lines
Bevy ECS Markers
Adds the support for marking entites and fetching them in queries
Example
View more examples here
#[derive(EntityMarker)]
enum Players {
Red,
Blue,
}
#[derive(EntityMarker)]
#[marker(data_name = "CurrentPlayerMarker")] // specify how the generated MarkerData struct should be called
struct CurrentPlayer;
#[derive(Component)]
struct Player(u32);
fn setup(
mut commands: Commands,
mut markers: MarkerMut<Players>,
mut current: MarkerMut<CurrentPlayer>,
) {
let red = commands.spawn(Player(12)).id();
markers[Players::Red] = red;
let blue = commands.spawn(Player(7)).id();
markers[Players::Blue] = blue;
**current = blue;
}
fn get_red_player(mut query: Query<&mut Player>, markers: Marker<Players>) {
if let Ok(mut player) = query.get_mut(markers[Players::Red]) {
player.0 = 15;
}
}
fn get_current_player(mut query: Query<&mut Player>, current: Marker<CurrentPlayer>) {
if let Ok(mut player) = query.get_mut(**current) {
player.0 = 2;
}
}
License
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
Dependencies
~305–750KB
~18K SLoC