From a26cf344d691e91d2bf49cf82befdcecb60d1d40 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Tue, 31 May 2022 10:17:16 -0500 Subject: [PATCH] Add option check. --- src/sound/icon.rs | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/sound/icon.rs b/src/sound/icon.rs index 52da287..1c92f50 100644 --- a/src/sound/icon.rs +++ b/src/sound/icon.rs @@ -101,31 +101,35 @@ fn update( for visible in viewers.iter() { for (icon_entity, mut icon, visibility, parent, mut sound) in icons.iter_mut() { let entity = if visibility.is_some() { - icon_entity + Some(icon_entity) + } else if parent.is_some() { + Some(**parent.unwrap()) } else { - **parent.unwrap() + None }; - if visible.contains(&entity) { - let looping = sound.looping; - if looping { - sound.state = SoundState::Playing; - } else if let Some(interval) = icon.interval.as_mut() { - interval.tick(time.delta()); - if interval.finished() { + if let Some(entity) = entity { + if visible.contains(&entity) { + let looping = sound.looping; + if looping { sound.state = SoundState::Playing; - interval.reset(); + } else if let Some(interval) = icon.interval.as_mut() { + interval.tick(time.delta()); + if interval.finished() { + sound.state = SoundState::Playing; + interval.reset(); + } } + let buffer = buffers.get_handle(icon.sound); + sound.looping = icon.interval.is_none(); + if sound.buffer != buffer { + sound.buffer = buffer; + } + sound.gain = icon.gain; + sound.pitch = icon.pitch; + sound.reference_distance = icon.reference_distance; + sound.max_distance = icon.max_distance; + sound.rolloff_factor = icon.rolloff_factor; } - let buffer = buffers.get_handle(icon.sound); - sound.looping = icon.interval.is_none(); - if sound.buffer != buffer { - sound.buffer = buffer; - } - sound.gain = icon.gain; - sound.pitch = icon.pitch; - sound.reference_distance = icon.reference_distance; - sound.max_distance = icon.max_distance; - sound.rolloff_factor = icon.rolloff_factor; } else { sound.state = SoundState::Stopped; }