You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
45 lines
1.0 KiB
extends AudioStreamPlayer |
|
|
|
var stop_time:float |
|
|
|
func play_voice(data:Dictionary) -> void: |
|
if data == {}: |
|
stop_voice() |
|
return |
|
|
|
if data.has('volume'): |
|
volume_db = data['volume'] |
|
|
|
if data.has('audio_bus'): |
|
bus = data['audio_bus'] |
|
|
|
if data.has('file'): |
|
if data['file'] == '': |
|
stop_voice() |
|
return |
|
var s:AudioStream = load(data['file']) |
|
if s != null: |
|
stream = s |
|
#Will play from start_time when possible |
|
if data.has('start_time'): |
|
play(data['start_time']) |
|
else: |
|
play() |
|
#Stop time will fall back to length of audiostream minus 0.1 secund |
|
#if not defined otherwise. This should allow _process to stop the |
|
#audio before it autorepeats |
|
if data.has('stop_time'): |
|
stop_time = data['stop_time'] |
|
if stop_time <= 0: |
|
stop_time = s.get_length() - 0.1 |
|
else: |
|
stop_time = s.get_length() - 0.1 |
|
else: |
|
stop_voice() |
|
func stop_voice(): |
|
stop() |
|
|
|
func _process(_delta): |
|
#Will automatically stop playing when reaching stop_time |
|
if(playing && get_playback_position() >= stop_time): |
|
stop_voice()
|
|
|