From b6b19cbd7b3df9ca84c6eab27c02f700a3dbecad Mon Sep 17 00:00:00 2001 From: blujai831 Date: Wed, 24 Jan 2024 15:39:13 -0800 Subject: [PATCH] Added some guard conditionals to AudioFader to make it resilient against, for example, playing null streams. --- audio/AudioFader.gd | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/audio/AudioFader.gd b/audio/AudioFader.gd index da7df08..a5ec31d 100644 --- a/audio/AudioFader.gd +++ b/audio/AudioFader.gd @@ -27,12 +27,13 @@ func _create_members() -> void: ## Fades in the current audio player. func fade_in(stream: AudioStream, fade: float = DEFAULT_AUDIO_FADE) -> void: await fade_out() - player.volume_db = AUDIO_FADE_MIN_VOLUME player.stream = stream - player.play() - var tween := await tween_channel.create_tween(player) - tween.tween_property(player, ^'volume_db', 0.0, fade) - await tween_channel.sync(tween) + if player.stream: + player.volume_db = AUDIO_FADE_MIN_VOLUME + player.play() + var tween := await tween_channel.create_tween(player) + tween.tween_property(player, ^'volume_db', 0.0, fade) + await tween_channel.sync(tween) ## Fades out an arbitrary audio player on an arbitrary tween channel. static func _fade_out_foreign( @@ -40,7 +41,7 @@ static func _fade_out_foreign( p_tween_channel: TweenChannel, fade: float = DEFAULT_AUDIO_FADE ) -> void: - if p_player.volume_db > AUDIO_FADE_MIN_VOLUME: + if p_player.playing and p_player.volume_db > AUDIO_FADE_MIN_VOLUME: var tween := await p_tween_channel.create_tween(p_player) tween.tween_property( p_player, ^'volume_db', AUDIO_FADE_MIN_VOLUME, fade @@ -55,9 +56,10 @@ func fade_out(fade: float = DEFAULT_AUDIO_FADE) -> void: ## Plays audio without fading in. func play(stream: AudioStream) -> void: await player.fade_out() - player.volume_db = 0.0 player.stream = stream - player.play() + if player.stream: + player.volume_db = 0.0 + player.play() ## Fades out old audio and fades in new audio at the same time. func crossfade(stream: AudioStream, fade: float = DEFAULT_AUDIO_FADE) -> void: