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

Download history 24/week @ 2024-02-19 10/week @ 2024-02-26 95/week @ 2024-03-11 56/week @ 2024-03-18 251/week @ 2024-04-01

402 downloads per month
Used in bevy_ecs_markers

MIT/Apache

4KB
72 lines

Bevy ECS Markers

Crates.io MIT/Apache 2.0

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

at your option.

Dependencies

~305–750KB
~18K SLoC