| Crates.io | bevy_channel_trigger |
| lib.rs | bevy_channel_trigger |
| version | 0.4.0 |
| created_at | 2024-11-03 17:14:15.182328+00 |
| updated_at | 2025-04-26 09:35:18.952068+00 |
| description | Send events via a channels form anywhere (eg. c-ffi) to Bevy Observers |
| homepage | |
| repository | https://github.com/rustunit/bevy_channel_trigger |
| max_upload_size | |
| id | 1433989 |
| size | 343,831 |
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 | our version |
|---|---|
| 0.15 | 0.3,main |
| 0.14 | 0.1,0.2 |
this crate is dual-licensed under either MIT or Apache 2.0, at your option.