CrossingOver/addons/resonate/plugin.gd
2024-03-14 00:53:46 -03:00

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")