init
This commit is contained in:
commit
18efc36800
161 changed files with 5008 additions and 0 deletions
82
addons/sound_manager/music.gd
Normal file
82
addons/sound_manager/music.gd
Normal file
|
@ -0,0 +1,82 @@
|
|||
extends "./abstract_audio_player_pool.gd"
|
||||
|
||||
|
||||
var track_history: PackedStringArray = []
|
||||
|
||||
|
||||
func play(resource: AudioStream, position: float = 0.0, volume: float = 0.0, crossfade_duration: float = 0.0, override_bus: String = "") -> AudioStreamPlayer:
|
||||
stop(crossfade_duration * 2)
|
||||
|
||||
var player = get_busy_player_with_resource(resource)
|
||||
|
||||
# If the player already exists then just make sure the volume is right (it might have just been fading in or out)
|
||||
if player != null:
|
||||
fade_volume(player, player.volume_db, volume, crossfade_duration)
|
||||
return player
|
||||
|
||||
# Otherwise we need to prep another player and handle its introduction
|
||||
player = prepare(resource, override_bus)
|
||||
fade_volume(player, -80.0, volume, crossfade_duration)
|
||||
|
||||
# Remember this track name
|
||||
track_history.insert(0, resource.resource_path)
|
||||
if track_history.size() > 50:
|
||||
track_history.remove_at(50)
|
||||
|
||||
player.call_deferred("play", position)
|
||||
return player
|
||||
|
||||
|
||||
func is_playing(resource: AudioStream) -> bool:
|
||||
if resource != null:
|
||||
return get_busy_player_with_resource(resource) != null
|
||||
else:
|
||||
return busy_players.size() > 0
|
||||
|
||||
|
||||
func stop(fade_out_duration: float = 0.0) -> void:
|
||||
for player in busy_players:
|
||||
if fade_out_duration <= 0.0:
|
||||
fade_out_duration = 0.01
|
||||
fade_volume(player, player.volume_db, -80, fade_out_duration)
|
||||
|
||||
|
||||
func pause(resource: AudioStream = null) -> void:
|
||||
if resource != null:
|
||||
var player = get_busy_player_with_resource(resource)
|
||||
if is_instance_valid(player):
|
||||
player.stream_paused = true
|
||||
else:
|
||||
for player in busy_players:
|
||||
player.stream_paused = true
|
||||
|
||||
|
||||
func resume(resource: AudioStream = null) -> void:
|
||||
if resource != null:
|
||||
var player = get_busy_player_with_resource(resource)
|
||||
if is_instance_valid(player):
|
||||
player.stream_paused = false
|
||||
else:
|
||||
for player in busy_players:
|
||||
player.stream_paused = false
|
||||
|
||||
|
||||
func is_track_playing(resource_path: String) -> bool:
|
||||
for player in busy_players:
|
||||
if player.stream.resource_path == resource_path:
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func get_currently_playing() -> Array[AudioStream]:
|
||||
var tracks: Array[AudioStream] = []
|
||||
for player in busy_players:
|
||||
tracks.append(player.stream)
|
||||
return tracks
|
||||
|
||||
|
||||
func get_currently_playing_tracks() -> PackedStringArray:
|
||||
var tracks: PackedStringArray = []
|
||||
for player in busy_players:
|
||||
tracks.append(player.stream.resource_path)
|
||||
return tracks
|
Loading…
Add table
Add a link
Reference in a new issue