26 lines
937 B
GDScript
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)
|