aboutsummaryrefslogtreecommitdiff
path: root/client/audio/play_random.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/audio/play_random.gd')
-rw-r--r--client/audio/play_random.gd32
1 files changed, 24 insertions, 8 deletions
diff --git a/client/audio/play_random.gd b/client/audio/play_random.gd
index afdf046f..d702756d 100644
--- a/client/audio/play_random.gd
+++ b/client/audio/play_random.gd
@@ -17,19 +17,35 @@ extends Node
class_name PlayRandom
@export var volume_db := 0.0
-@export var enable_attenuations := true
+@export var enable_attenuations := false
var autoplay := false
-
-@onready var sounds = get_children()
+var manual_setup_called := false
+var sounds = []
func _ready():
+ if manual_setup_called:
+ return
+ sounds = get_children()
for s: AudioStreamPlayer3D in sounds:
- s.connect("finished", sound_finished)
- s.volume_db = volume_db
-
- if not enable_attenuations:
- s.attenuation_filter_cutoff_hz = 20500
+ configure_player(s)
+
+func setup(new_sounds: Array):
+ # new_sounds should be an array of AudioStream
+ manual_setup_called = true
+ for s in new_sounds:
+ var player = AudioStreamPlayer3D.new()
+ player.stream = s
+ configure_player(player)
+ add_child(player)
+ sounds.append(player)
+
+func configure_player(player):
+ player.connect("finished", sound_finished)
+ player.volume_db = volume_db
+
+ if not enable_attenuations:
+ player.attenuation_filter_cutoff_hz = 20500
func play_random():
var s = sounds[randi_range(0, sounds.size() - 1)]