40 lines
1.1 KiB
GDScript
40 lines
1.1 KiB
GDScript
@tool
|
|
extends ListOptionControl
|
|
|
|
func _set_input_device() -> void:
|
|
var current_setting : Variant = _get_setting(default_value)
|
|
if current_setting is bool:
|
|
current_setting = &"Default"
|
|
AudioServer.input_device = _get_setting(default_value)
|
|
|
|
func _add_microphone_audio_stream() -> void:
|
|
var instance := AudioStreamPlayer.new()
|
|
instance.stream = AudioStreamMicrophone.new()
|
|
instance.autoplay = true
|
|
add_child.call_deferred(instance)
|
|
instance.ready.connect(_set_input_device)
|
|
|
|
func _ready() -> void:
|
|
if ProjectSettings.get_setting("audio/driver/enable_input", false):
|
|
show()
|
|
if AudioServer.input_device.is_empty():
|
|
_add_microphone_audio_stream()
|
|
else:
|
|
_set_input_device()
|
|
if not Engine.is_editor_hint():
|
|
option_values = AudioServer.get_input_device_list()
|
|
else:
|
|
hide()
|
|
super._ready()
|
|
|
|
func _on_setting_changed(value : Variant) -> void:
|
|
if value >= option_values.size(): return
|
|
AudioServer.input_device = option_values[value]
|
|
super._on_setting_changed(value)
|
|
|
|
func _value_title_map(value : Variant) -> String:
|
|
if value is String:
|
|
return value
|
|
else:
|
|
return super._value_title_map(value)
|