diff --git a/crates/bevy_audio/src/audio_output.rs b/crates/bevy_audio/src/audio_output.rs index b4f942c7c84c9..f42db09df654c 100644 --- a/crates/bevy_audio/src/audio_output.rs +++ b/crates/bevy_audio/src/audio_output.rs @@ -178,9 +178,20 @@ impl AudioSink { self.sink.as_ref().unwrap().pause(); } + /// Toggles the playback of this sink. + /// + /// Will pause if playing, and will be resumed if paused. + pub fn toggle(&self) { + if self.is_paused() { + self.play(); + } else { + self.pause(); + } + } + /// Is this sink paused? /// - /// Sinks can be paused and resumed using [`pause`](Self::pause) and [`play`](Self::play). + /// Sinks can be paused and resumed using [`pause`](Self::pause), [`play`](Self::play), and [`toggle`](Self::toggle). pub fn is_paused(&self) -> bool { self.sink.as_ref().unwrap().is_paused() } diff --git a/examples/audio/audio_control.rs b/examples/audio/audio_control.rs index d5344e68ead8b..85598082276a7 100644 --- a/examples/audio/audio_control.rs +++ b/examples/audio/audio_control.rs @@ -43,11 +43,7 @@ fn pause( ) { if keyboard_input.just_pressed(KeyCode::Space) { if let Some(sink) = audio_sinks.get(&music_controller.0) { - if sink.is_paused() { - sink.play(); - } else { - sink.pause(); - } + sink.toggle(); } } }