From 04d4ce1e68d4dc2d1b4e401cb58586b45520e68c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lena=20Miliz=C3=A9?= Date: Thu, 20 Oct 2022 22:22:40 +0200 Subject: [PATCH 1/2] add AudioSink::toggle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lena Milizé --- crates/bevy_audio/src/audio_output.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/crates/bevy_audio/src/audio_output.rs b/crates/bevy_audio/src/audio_output.rs index e378a2c43f4c3..6b913fb97295d 100644 --- a/crates/bevy_audio/src/audio_output.rs +++ b/crates/bevy_audio/src/audio_output.rs @@ -177,10 +177,21 @@ impl AudioSink { pub fn pause(&self) { 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() } From c8c9993833f698a305e6792b4b154f05c8abbfbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lena=20Miliz=C3=A9?= Date: Thu, 20 Oct 2022 22:23:52 +0200 Subject: [PATCH 2/2] use AudioSink::toggle in examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lena Milizé --- crates/bevy_audio/src/audio_output.rs | 2 +- examples/audio/audio_control.rs | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/crates/bevy_audio/src/audio_output.rs b/crates/bevy_audio/src/audio_output.rs index 6b913fb97295d..3aba8433a9989 100644 --- a/crates/bevy_audio/src/audio_output.rs +++ b/crates/bevy_audio/src/audio_output.rs @@ -177,7 +177,7 @@ impl AudioSink { pub fn pause(&self) { self.sink.as_ref().unwrap().pause(); } - + /// Toggles the playback of this sink. /// /// Will pause if playing, and will be resumed if paused. diff --git a/examples/audio/audio_control.rs b/examples/audio/audio_control.rs index 2c5da2c919936..8fcab102fb745 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(); } } }