102 lines
3.2 KiB
GDScript
102 lines
3.2 KiB
GDScript
@tool
|
|
extends EditorPlugin
|
|
|
|
|
|
const ResonateSettings = preload("shared/resonate_settings.gd")
|
|
var _settings = ResonateSettings.new()
|
|
|
|
|
|
func _enter_tree():
|
|
add_autoload_singleton("SoundManager", "sound_manager/sound_manager.gd")
|
|
add_autoload_singleton("MusicManager", "music_manager/music_manager.gd")
|
|
add_custom_type("SoundBank", "Node", preload("sound_manager/sound_bank.gd"), preload("sound_manager/sound_bank.svg"))
|
|
add_custom_type("MusicBank", "Node", preload("music_manager/music_bank.gd"), preload("music_manager/music_bank.svg"))
|
|
|
|
add_project_setting(
|
|
_settings.SOUND_BANK_BUS_SETTING_NAME,
|
|
_settings.SOUND_BANK_BUS_SETTING_DEFAULT,
|
|
_settings.SOUND_BANK_BUS_SETTING_ACTUAL,
|
|
TYPE_STRING)
|
|
|
|
add_project_setting(
|
|
_settings.POOL_1D_SIZE_SETTING_NAME,
|
|
_settings.POOL_1D_SIZE_SETTING_DEFAULT,
|
|
_settings.POOL_1D_SIZE_SETTING_ACTUAL,
|
|
TYPE_INT, PROPERTY_HINT_RANGE, "1,128")
|
|
|
|
add_project_setting(
|
|
_settings.POOL_2D_SIZE_SETTING_NAME,
|
|
_settings.POOL_2D_SIZE_SETTING_DEFAULT,
|
|
_settings.POOL_2D_SIZE_SETTING_ACTUAL,
|
|
TYPE_INT, PROPERTY_HINT_RANGE, "1,128")
|
|
|
|
add_project_setting(
|
|
_settings.POOL_3D_SIZE_SETTING_NAME,
|
|
_settings.POOL_3D_SIZE_SETTING_DEFAULT,
|
|
_settings.POOL_3D_SIZE_SETTING_ACTUAL,
|
|
TYPE_INT, PROPERTY_HINT_RANGE, "1,128")
|
|
|
|
add_project_setting(
|
|
_settings.MAX_POLYPHONY_SETTING_NAME,
|
|
_settings.MAX_POLYPHONY_SETTING_DEFAULT,
|
|
_settings.MAX_POLYPHONY_SETTING_ACTUAL,
|
|
TYPE_INT, PROPERTY_HINT_RANGE, "1,128")
|
|
|
|
add_project_setting(
|
|
_settings.MUSIC_BANK_BUS_SETTING_NAME,
|
|
_settings.MUSIC_BANK_BUS_SETTING_DEFAULT,
|
|
_settings.MUSIC_BANK_BUS_SETTING_ACTUAL,
|
|
TYPE_STRING)
|
|
|
|
migrate_old_bus_settings()
|
|
|
|
|
|
func _exit_tree():
|
|
remove_autoload_singleton("SoundManager")
|
|
remove_autoload_singleton("MusicManager")
|
|
remove_custom_type("SoundBank")
|
|
remove_custom_type("MusicBank")
|
|
|
|
|
|
func add_project_setting(p_name: String, p_default, p_actual, p_type: int, p_hint: int = PROPERTY_HINT_NONE, p_hint_string: String = ""):
|
|
if ProjectSettings.has_setting(p_name):
|
|
return
|
|
|
|
ProjectSettings.set_setting(p_name, p_actual)
|
|
|
|
ProjectSettings.add_property_info({
|
|
"name": p_name,
|
|
"type": p_type,
|
|
"hint": p_hint,
|
|
"hint_string": p_hint_string,
|
|
})
|
|
|
|
ProjectSettings.set_initial_value(p_name, p_default)
|
|
|
|
var error: int = ProjectSettings.save()
|
|
|
|
if error:
|
|
push_error("Resonate - Encountered error %d when saving project settings." % error)
|
|
|
|
|
|
func migrate_old_bus_settings():
|
|
# This migration helps to ensure that users upgrading from an old version of Resonate
|
|
# to a version that uses the "*_BANK_BUS_SETTING*" ids won't loose their previous
|
|
# audio bus settings. After migration occurs, the old settings are deleted.
|
|
|
|
if ProjectSettings.has_setting("audio/manager/sound/bank"):
|
|
var value = ProjectSettings.get_setting(
|
|
"audio/manager/sound/bank",
|
|
_settings.SOUND_BANK_BUS_SETTING_ACTUAL)
|
|
|
|
ProjectSettings.set_setting(_settings.SOUND_BANK_BUS_SETTING_NAME, value)
|
|
ProjectSettings.clear("audio/manager/sound/bank")
|
|
|
|
if ProjectSettings.has_setting("audio/manager/music/bank"):
|
|
var value = ProjectSettings.get_setting(
|
|
"audio/manager/music/bank",
|
|
_settings.MUSIC_BANK_BUS_SETTING_ACTUAL)
|
|
|
|
ProjectSettings.set_setting(_settings.MUSIC_BANK_BUS_SETTING_NAME, value)
|
|
ProjectSettings.clear("audio/manager/music/bank")
|
|
|