Send events via a channel from anywhere (eg. web-dom, c-ffi) to Bevy Observers.
Inspired by bevy_crossbeam_event but delivering the events via Bevy Observers instead of EventReader
.
#[derive(Event)]
struct MyEvent(i32);
fn main() {
use bevy_channel_trigger::ChannelTriggerApp;
let mut app = App::new();
app.add_plugins(MinimalPlugins);
// create channel
let sender = app.add_channel_trigger::<MyEvent>();
// use sender from anywhere:
thread::spawn(move || {
let mut counter = 1;
loop {
// send events back to bevy
sender.send(MyEvent(counter));
thread::sleep(Duration::from_secs(1));
counter += 1;
}
});
// register an observer to receive the events sent via `sender`
app.observe(on_event);
app.run();
}
// regular bevy observer to handle these events coming into the bevy world
fn on_event(trigger: Trigger<MyEvent>) {
let event = trigger.event();
println!("trigger with: {}", event.0);
}
- bevy_device_lang
- bevy_ios_review
- bevy_ios_impact
- bevy_ios_alerts
- bevy_ios_iap
- bevy_ios_notifications
- bevy_ios_gamecenter
- bevy_web_popups
- bevy_libgdx_asset
- bevy_debug_log
bevy | our version |
---|---|
0.14 | 0.1 |
this crate is dual-licensed under either MIT or Apache 2.0, at your option.