"A simple concurrent event plugin,the principle is similar to Commads,events can be send/read concurrently, but the reading of events is always in the next bevy frame"
#[derive(Event)]
struct E;
fn main() {
App::new().add_event_manager::<E>()
....
;
}
fn send(mut sender:EventsSender<E>){
sender.send(e);
...
}
fn read(sender:EventsReader<E>){
sender.par_iter()...//iter()
}
use bevy::{
app::{App, Update},
ecs::event::Event,
};
use bevy_concurrent_event::events::{
ConcurrentEvent, EventsReader, EventsSender,
};
use rayon::iter::ParallelIterator;
#[derive(Event)]
struct E;
pub fn main() {
App::new().add_event_manager::<E>().add_systems(
Update,
(
|mut s: EventsSender<E>| s.send(E),
|r: EventsReader<E>| r.par_read().for_each(|_| {}),
),
);
}