use bevy::{log::LogPlugin, prelude::*, time::common_conditions::on_timer};
use bevy_seedling::prelude::*;
use std::time::Duration;
fn main() {
App::new()
.add_plugins((
MinimalPlugins,
LogPlugin::default(),
AssetPlugin::default(),
SeedlingPlugin::default(),
))
.add_systems(Startup, startup)
.add_systems(Update, remove_all.run_if(on_timer(Duration::from_secs(7))))
.add_observer(on_finished)
.run();
}
fn startup(server: Res<AssetServer>, mut commands: Commands) {
commands.spawn((SamplePlayer::new(server.load("caw.ogg")), OnFinished));
}
#[derive(Component)]
struct OnFinished;
fn on_finished(_: On<Remove, OnFinished>, server: Res<AssetServer>, mut commands: Commands) {
info!("One-shot sample finished, playing looped sample!");
commands.spawn(SamplePlayer::new(server.load("caw.ogg")).looping());
}
fn remove_all(mut q: Query<Entity, With<SamplePlayer>>, mut commands: Commands) {
for sample in q.iter_mut() {
info!("Stopping all samples...");
commands.entity(sample).despawn();
}
}