commands_send_event

Crates.iocommands_send_event
lib.rscommands_send_event
version0.6.0
sourcesrc
created_at2022-03-07 09:17:35.473244
updated_at2022-11-16 08:16:16.117407
descriptionBevy generic event dispatcher extension trait
homepage
repositoryhttps://github.com/ickshonpe/commands_send_event
max_upload_size
id544913
size58,729
(ickshonpe)

documentation

README

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)
);
Commit count: 10

cargo fmt