Blobby/src/Utilities/SceneAudio.gd

26 lines
937 B
GDScript

extends Node
onready var players: Dictionary = {}
var disposable_player: AudioStreamPlayer
func play_scene_dependent(sound_name: String, bus: String = "Master", attenuation: float = 0.0, singleton = false) -> void:
if singleton && players.has(sound_name):
return
disposable_player = AudioStreamPlayer.new()
add_child(disposable_player)
disposable_player.stream = GlobalState.sound_library[sound_name]
disposable_player.volume_db = attenuation
disposable_player.bus = bus
disposable_player.play()
disposable_player.connect("finished", self, "dispose_player")
players[sound_name] = disposable_player
func dispose_player(player: AudioStreamPlayer = disposable_player) -> void:
if player == null: return
player.queue_free()
func stop_scene_dependent(sound_name: String):
if players.has(sound_name):
dispose_player(players[sound_name])
players.erase(sound_name)