bevy_crossbeam_event 0.11.0

Fire Bevy events from crossbeam channels
Documentation
# bevy_crossbeam_event

[![crates.io](https://img.shields.io/crates/v/bevy_crossbeam_event.svg)](https://crates.io/crates/bevy_crossbeam_event)
![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg)
[![crates.io](https://img.shields.io/crates/d/bevy_crossbeam_event.svg)](https://crates.io/crates/bevy_crossbeam_event)
[![docs.rs](https://img.shields.io/docsrs/bevy_crossbeam_event)](https://docs.rs/bevy_crossbeam_event)

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>`:

```rust ignore
#[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_observer(handle_lobby_joined);
    }
}
```

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

```rust ignore
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 with observers:

```rust ignore
fn handle_lobby_joined(lobby_joined: On<LobbyJoined>) {
    info!("lobby joined: {:?}", lobby_joined.0);
}
```

## Bevy Version Support

The `main` branch targets the latest bevy release.

|bevy|bevy_crossbeam_event|
|----|--------------------|
|0.19| 0.11, main         |
|0.18| 0.10               |
|0.17| 0.9                |
|0.16| 0.8                |
|0.15| 0.7                |
|0.14| 0.6                |
|0.13| 0.5                |
|0.12| 0.3                |
|0.11| 0.2                |
|0.10| 0.1                |

In Bevy 0.17, events changed functionality and became what was previously known as "triggers", if you prefer the old behavior with asyncronous messages, check out [bevy_channel_message](https://github.com/rustunit/bevy_channel_message).

## License

`bevy_crossbeam_event` is dual-licensed under either

- 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.

## Contributions

PRs welcome!