antichamber-at-home/addons/portals/scripts/portal_settings.gd

37 lines
1.3 KiB
GDScript

class_name PortalSettings
## Static helper class for portal project settings.
##
## Features helper methods for inserting addon-related settings into [ProjectSettings].
## Used mainly in plugin initialization and for getting defaults in [Portal3D]
static func _qual_name(setting: String) -> String:
return "addons/portals/" + setting
static func init_setting(setting: String,
default_value: Variant,
requires_restart: bool = false) -> void:
setting = _qual_name(setting)
# This would mean the setting is already overriden
if not ProjectSettings.has_setting(setting):
ProjectSettings.set_setting(setting, default_value)
ProjectSettings.set_initial_value(setting, default_value)
ProjectSettings.set_restart_if_changed(setting, requires_restart)
ProjectSettings.set_as_basic(setting, true)
## See companion class [class AtExport], it has some utilities which might be helpful!
static func add_info(config: Dictionary) -> void:
var qual_name = _qual_name(config["name"])
config["name"] = qual_name
# In case this is coming from AtExport, which is geared towards inspector properties
config.erase("usage")
ProjectSettings.add_property_info(config)
static func get_setting(setting: String) -> Variant:
setting = _qual_name(setting)
return ProjectSettings.get_setting(setting)