10 releases (5 stable)
1.0.4 | Dec 26, 2022 |
---|---|
1.0.0 | Dec 24, 2022 |
0.1.4 | Dec 23, 2022 |
#568 in Game dev
36 downloads per month
9KB
95 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
~5–16MB
~296K SLoC