#events #bevy #ecs #gamedev

commands_send_event

Bevy generic event dispatcher extension trait

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

MIT/Apache

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