5 releases
new 0.2.0 | Nov 4, 2024 |
---|---|
0.1.3 | Nov 3, 2024 |
0.1.2 | Nov 3, 2024 |
0.1.1 | Nov 3, 2024 |
0.1.0 | Nov 3, 2024 |
#800 in Game dev
99 downloads per month
Used in bevy_web_popups
34KB
59 lines
bevy_channel_trigger
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
.
example
#[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);
}
Other examples
Our Other Crates
- 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
Compatible Bevy Versions
bevy | our version |
---|---|
0.14 | 0.1 |
License
this crate is dual-licensed under either MIT or Apache 2.0, at your option.
Dependencies
~25MB
~464K SLoC