Crates.io | bevy_channel_trigger |
lib.rs | bevy_channel_trigger |
version | 0.3.0 |
source | src |
created_at | 2024-11-03 17:14:15.182328 |
updated_at | 2024-11-30 23:08:20.404481 |
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 | 339,077 |
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.