7 releases (breaking)
0.6.0 | Nov 16, 2022 |
---|---|
0.5.0 | Aug 1, 2022 |
0.4.0 | May 26, 2022 |
0.3.0 | May 13, 2022 |
0.1.1 | Mar 7, 2022 |
#2439 in Game dev
17KB
Commands Send Event
An extension trait for Commands that allows you to send events from a system without having to retrieve a typed EventWriter SystemParam.
- version 0.9 supports Bevy 0.9
- version 0.5 supports Bevy 0.8
- version 0.3 & 0.4 support Bevy 0.7
- versions <0.3 support Bevy 0.6
Limitations
- Events won't be dispatched immediately, but at the next Stage boundary when the queued commands are applied to the World.
Usage
Add to your project with the command
cargo add commands_send_event
or add directly add the dependency to your Cargo.toml
[dependencies.commands_send_event]
version = "0.6"
then the send_event
method is available on Commands:
use commands_send_event::CommandsSendEvent;
#[derive(Component)]
struct MyEventA(String);
#[derive(Component)]
struct MyEventB(i32);
fn sender(
mut commands: Commands
) {
commands.send_event(MyEventA("Hello, World"));
commands.send_event(MyEventB(42));
}
The /examples
folder has two examples you can run with:
cargo run --example basic_usage
cargo run --example schedule
AnyEventWriter is a facade over Commands that implements SystemParam.
Note
This crate is a bit redundant now since Bevy 0.8 as sending events using World
is very easy. With commands.add
you can queue a closure to dispatch an event like so:
commands.add(|world: &mut World|
world.send_event(MyEvent)
);
Dependencies
~18–34MB
~568K SLoC