#bevy #gamedev #channel

bevy_crossbeam_event

Fire Bevy events from crossbeam channels

7 releases (breaking)

Uses new Rust 2024

0.8.0 Apr 25, 2025
0.7.0 Nov 30, 2024
0.6.0 Jul 10, 2024
0.5.0 Feb 23, 2024
0.1.0 Mar 10, 2023

#1156 in Game dev

Download history 11/week @ 2025-01-28 22/week @ 2025-02-04 26/week @ 2025-02-11 21/week @ 2025-02-18 23/week @ 2025-02-25 20/week @ 2025-03-04 19/week @ 2025-03-11 2/week @ 2025-03-18 23/week @ 2025-03-25 2/week @ 2025-04-01 5/week @ 2025-04-08 18/week @ 2025-04-15 160/week @ 2025-04-22 42/week @ 2025-04-29 21/week @ 2025-05-06 40/week @ 2025-05-13

265 downloads per month
Used in 6 crates

MIT/Apache

14KB

bevy_crossbeam_event

crates.io MIT/Apache 2.0 crates.io docs.rs

Fire Bevy events from crossbeam channels.

Useful if you need to handle callbacks in 3rd party libraries etc. like steamworks-rs, or getting events out of tracing layers.

Usage

Add add events to your app using .add_crossbeam_event::<EventType>:

#[derive(Event, Clone, Debug)]
struct LobbyJoined(Lobby);

impl Plugin for MyPlugin {
    fn build(&self, app: &mut App) {
        app.add_crossbeam_event::<LobbyJoined>();
        app.add_startup_system(setup);
        app.add_system(handle_lobby_joined);
    }
}

Fire events by using Res<CrossbeamEventSender<EventType>> (which can be cloned and sent into callbacks):

fn setup(service: Res<ThirdPartyCode>, sender: Res<CrossbeamEventSender<LobbyJoined>>) {
    let sender = sender.clone();
    service.join_lobby(id, move |lobby| {
        sender.send(LobbyJoined(lobby));
    });
}

Handle the events just like normal Bevy events (which they are):

fn handle_lobby_joined(mut lobby_joined_events: EventReader<LobbyJoined>) {
    for lobby in lobby_joined_events.read() {
        info!("lobby joined: {lobby:?}");
    }
}

Bevy Version Support

The main branch targets the latest bevy release.

bevy bevy_crossbeam_event
0.16 0.8, main
0.15 0.7
0.14 0.6
0.13 0.5
0.12 0.3
0.11 0.2
0.10 0.1

License

bevy_crossbeam_event is dual-licensed under either

at your option.

Contributions

PRs welcome!

Dependencies

~18–25MB
~415K SLoC