rundumdiewelten/rund-um-die-welten/sfx/audioplayer.gd
phantomvines d8eec1150e upload
2025-09-19 16:37:23 +02:00

61 lines
1.3 KiB
GDScript

extends Node
# For sound effects
var active_players: Array = []
# For music
var music_player: AudioStreamPlayer = null
func play_sound(stream: AudioStream):
var player = AudioStreamPlayer.new()
player.stream = stream
player.process_mode = Node.PROCESS_MODE_ALWAYS # Plays even if paused
add_child(player)
player.play()
active_players.append(player)
player.finished.connect(func():
active_players.erase(player)
player.queue_free()
)
func stop_all():
for player in active_players:
if player.playing:
player.stop()
player.queue_free()
active_players.clear()
func play_music(path: String):
var stream = load(path) as AudioStream
if not stream:
push_error("Invalid music path: " + path)
return
# Stop existing music
if music_player and music_player.playing:
music_player.stop()
music_player.queue_free()
music_player = null
# Create new music player
music_player = AudioStreamPlayer.new()
music_player.stream = stream
music_player.bus = "Music" # Optional: use a dedicated bus
music_player.process_mode = Node.PROCESS_MODE_ALWAYS
music_player.volume_db = 0 # Adjust volume if needed
add_child(music_player)
music_player.stream.set_loop(true);
# music_player.stream.loop_offset = 0.05
music_player.play()
func stop_music():
if music_player:
music_player.stop()
music_player.queue_free()
music_player = null