use bevy::{log::LogPlugin, prelude::*};
use bevy_mod_observable_timer::*;
fn main() {
App::new()
.add_plugins((
MinimalPlugins,
LogPlugin::default(),
ObservableTimerPlugin::default(),
))
.add_systems(Startup, startup)
.run();
}
fn startup(mut commands: Commands) {
commands
.spawn(ObservableTimer::from_seconds(1.0, TimerMode::Repeating))
.observe(|_: On<TimerStarted>| {
info!("Timer started");
})
.observe(
|trigger: On<TimerFinished>, mut count: Local<usize>, mut commands: Commands| {
*count += 1;
info!("Timer finished (#{})", *count);
if *count == 5 {
commands.entity(trigger.entity).despawn();
}
},
)
.observe(
|_: On<TimerStopped>, mut app_exit: MessageWriter<AppExit>| {
info!("Timer stopped");
app_exit.write_default();
},
);
}