use bevy::ecs::{
prelude::{Commands, Event, Message, MessageWriter},
system::In,
};
pub fn write_message<E: Message + Clone>(event: E) -> impl FnMut(MessageWriter<E>) {
move |mut writer: MessageWriter<E>| {
writer.write(event.clone());
}
}
#[deprecated(since = "0.9.1", note = "please use `write_message` instead")]
pub fn send_event<E: Message + Clone>(event: E) -> impl FnMut(MessageWriter<E>) {
write_message(event)
}
pub fn trigger<'a, E>(event: E) -> impl FnMut(Commands)
where
E: Event + Clone,
<E as Event>::Trigger<'a>: Default,
{
move |mut commands: Commands| {
commands.trigger(event.clone());
}
}
pub fn write_message_with_input<E: Message, Input: 'static, F: FnMut(Input) -> E>(
mut f: F,
) -> impl FnMut(In<Input>, MessageWriter<E>) {
move |In(x), mut writer: MessageWriter<E>| {
writer.write(f(x));
}
}
#[deprecated(
since = "0.9.1",
note = "please use `write_message_with_input` instead"
)]
pub fn send_event_with_input<E: Message, Input: 'static, F: FnMut(Input) -> E>(
f: F,
) -> impl FnMut(In<Input>, MessageWriter<E>) {
write_message_with_input(f)
}