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)