#![expect(clippy::print_stdout, reason = "Allowed in examples.")]
use bevy_ecs::{message::MessageRegistry, prelude::*};
fn main() {
let mut world = World::new();
MessageRegistry::register_message::<MyMessage>(&mut world);
let mut schedule = Schedule::default();
#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
pub struct EventFlusherSystems;
schedule.add_systems(bevy_ecs::message::message_update_system.in_set(EventFlusherSystems));
schedule.add_systems((
sending_system.after(EventFlusherSystems),
receiving_system.after(sending_system),
));
for iteration in 1..=10 {
println!("Simulating frame {iteration}/10");
schedule.run(&mut world);
}
}
#[derive(Message)]
struct MyMessage {
pub message: String,
pub random_value: f32,
}
fn sending_system(mut message_writer: MessageWriter<MyMessage>) {
let random_value: f32 = rand::random();
if random_value > 0.5 {
message_writer.write(MyMessage {
message: "A random message with value > 0.5".to_string(),
random_value,
});
}
}
fn receiving_system(mut message_reader: MessageReader<MyMessage>) {
for my_message in message_reader.read() {
println!(
" Received message {}, with random value of {}",
my_message.message, my_message.random_value
);
}
}