From 2c84c1cef852a8bcabb5ff521722299a196df6b2 Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Fri, 29 Sep 2023 21:43:41 -0700 Subject: [PATCH] Fixup hello-fmod with buttons! --- .gitignore | 4 ++ examples/hello-fmod.rs | 114 ++++++++++++++++++++--------------------- 2 files changed, 60 insertions(+), 58 deletions(-) diff --git a/.gitignore b/.gitignore index 30f88d0..a906ad1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ +# Rust patterns /target + +# FMOD patterns **/.cache/ **/.user/ **/.unsaved/ **/*.fspackage +**/Build/ diff --git a/examples/hello-fmod.rs b/examples/hello-fmod.rs index 02ddf5f..0f7d020 100644 --- a/examples/hello-fmod.rs +++ b/examples/hello-fmod.rs @@ -16,12 +16,12 @@ fn main() { "./assets/audio/Martian Chess/Build/Desktop/Master.bank", "./assets/audio/Martian Chess/Build/Desktop/Master.strings.bank", "./assets/audio/Martian Chess/Build/Desktop/Music.bank", + "./assets/audio/Martian Chess/Build/Desktop/SFX.bank", ], }, )) .add_systems(Startup, startup) - .add_systems(PostStartup, play_music) - .add_systems(Update, set_music) + .add_systems(Update, play_music) .run(); } @@ -29,66 +29,64 @@ fn main() { struct MyMusicPlayer; fn startup(mut commands: Commands, studio: Res) { - let event_description = studio.0.get_event("event:/Martian Chess").unwrap(); - - studio - .0 - .get_bank_list(10) - .expect("List banks") - .iter() - .for_each(|bank| { - info!("Bank: {:?}", bank.get_path().expect("Get bank path")); - bank.get_event_list(100) - .iter() - .flat_map(|events| events.iter()) - .for_each(|event| { - info!("Event path: {:?}", event.get_path()); - info!( - "Event parameter description {:?}", - event.get_parameter_description_by_name("Game State") - ); + commands + .spawn(NodeBundle { + style: Style { + flex_direction: FlexDirection::Column, + ..default() + }, + ..default() + }) + .with_children(|parent| { + studio + .0 + .get_bank_list(10) + .expect("List banks") + .into_iter() + .flat_map(|bank| { + bank.get_event_list(100) + .into_iter() + .flat_map(|events| events.into_iter()) + .filter_map(|event| event.get_path().ok()) + }) + .for_each(|event_path| { + parent + .spawn(( + ButtonBundle { + style: Style { ..default() }, + ..default() + }, + AudioSource::new(studio.0.get_event(event_path.as_str()).unwrap()), + )) + .with_children(|parent| { + parent.spawn(TextBundle::from_section( + event_path, + TextStyle { + color: Color::BLACK.into(), + ..default() + }, + )); + }); }); }); - commands - .spawn(MyMusicPlayer) - .insert(AudioSource::new(event_description)); + commands.spawn(( + Camera2dBundle { ..default() }, + UiCameraConfig { show_ui: true }, + )); } -fn play_music(mut audio_sources: Query<&AudioSource, With>) { - if let Ok(audio_source) = audio_sources.get_single_mut() { - audio_source.play(); - } -} - -fn set_music( - mut events: EventReader, - mut audio_sources: Query<&AudioSource, With>, +fn play_music( + mut events: Query< + (&Interaction, &mut AudioSource), + (Changed, With