Files
fps_project_1/addons/dreadpon.spatial_gardener/utility/project_settings_manager.gd

151 lines
5.0 KiB
GDScript

@tool
#-------------------------------------------------------------------------------
# Manages adding all plugin project settings
#-------------------------------------------------------------------------------
const Globals = preload("globals.gd")
const FunLib = preload("fun_lib.gd")
const Logger = preload("logger.gd")
# Add all settings for this plugin
static func add_plugin_project_settings():
# Remove settings from the previous plugin version
if ProjectSettings.has_setting("dreadpons_spatial_gardener/input_and_ui/brush_property_edit_button"):
ProjectSettings.clear("dreadpons_spatial_gardener/input_and_ui/brush_property_edit_button")
if ProjectSettings.has_setting("dreadpons_spatial_gardener/input_and_ui/brush_property_edit_modifier_key"):
ProjectSettings.clear("dreadpons_spatial_gardener/input_and_ui/brush_property_edit_modifier_key")
if ProjectSettings.has_setting("dreadpons_spatial_gardener/input_and_ui/brush_size_slider_max_value"):
ProjectSettings.clear("dreadpons_spatial_gardener/input_and_ui/brush_size_slider_max_value")
# Painting
add_project_setting(
"dreadpons_spatial_gardener/painting/projection_raycast_margin",
0.1,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/painting/simplify_projection_frustum",
true,
TYPE_BOOL)
# Input and UI
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/greenhouse_ui_enable_undo_redo",
true,
TYPE_BOOL)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/greenhouse_thumbnail_scale",
1.0,
TYPE_FLOAT)
add_project_setting_globals_enum(
"dreadpons_spatial_gardener/input_and_ui/brush_prop_edit_button",
Globals.MouseButton.MOUSE_BUTTON_XBUTTON1, Globals.MouseButton)
add_project_setting_globals_enum(
"dreadpons_spatial_gardener/input_and_ui/brush_prop_edit_modifier",
Globals.KeyboardKey.KEY_SHIFT, Globals.KeyboardKey)
add_project_setting_globals_enum(
"dreadpons_spatial_gardener/input_and_ui/brush_overlap_mode_button",
Globals.KeyboardKey.KEY_QUOTELEFT, Globals.KeyboardKey)
add_project_setting_globals_enum(
"dreadpons_spatial_gardener/input_and_ui/focus_painter_key",
Globals.KeyboardKey.KEY_Q, Globals.KeyboardKey)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/brush_volume_size_slider_max_value",
100.0,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/brush_projection_size_slider_max_value",
1000.0,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/plant_max_distance_slider_max_value",
1000.0,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/plant_kill_distance_slider_max_value",
2000.0,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/plant_density_slider_max_value",
2000.0,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/input_and_ui/octree_min_node_size_slider_max_value",
500.0,
TYPE_FLOAT)
# Plugin
add_project_setting(
"dreadpons_spatial_gardener/plugin/scan_for_outdated_scenes",
true,
TYPE_BOOL)
# Debug
add_project_setting_globals_enum(
"dreadpons_spatial_gardener/debug/dump_editor_tree_key",
Globals.KeyboardKey.KEY_NONE, Globals.KeyboardKey)
add_project_setting_globals_enum(
"dreadpons_spatial_gardener/debug/dump_all_octrees_key",
Globals.KeyboardKey.KEY_NONE, Globals.KeyboardKey)
add_project_setting(
"dreadpons_spatial_gardener/debug/arborist_log_lifecycle",
false,
TYPE_BOOL)
add_project_setting(
"dreadpons_spatial_gardener/debug/octree_log_lifecycle",
false,
TYPE_BOOL)
add_project_setting(
"dreadpons_spatial_gardener/debug/brush_placement_area_log_grid",
false,
TYPE_BOOL)
add_project_setting(
"dreadpons_spatial_gardener/debug/input_field_resource_log_prop_actions",
false,
TYPE_BOOL)
add_project_setting(
"dreadpons_spatial_gardener/debug/debug_viewer_octree_member_size",
2.0,
TYPE_FLOAT)
add_project_setting(
"dreadpons_spatial_gardener/debug/stroke_handler_debug_draw",
false,
TYPE_BOOL)
# Saving settings
var err: int = ProjectSettings.save()
if err:
var logger = Logger.get_for_string("ProjectSettingsManager")
logger.error("Encountered error %s when saving project settings" % [Globals.get_err_message(err)])
# Shorthand for adding enum setting and generating it's info
static func add_project_setting_globals_enum(setting_name:String, default_value:int, enum_dict:Dictionary):
add_project_setting(
setting_name,
Globals.enum_to_index(default_value, enum_dict),
TYPE_INT, PROPERTY_HINT_ENUM,
FunLib.make_hint_string(enum_dict.keys()))
# Shorthand for adding a setting, setting it's info and initial value
static func add_project_setting(setting_name:String, default_value, type:int, hint:int = PROPERTY_HINT_NONE, hintString:String = ""):
var setting_info: Dictionary = {
"name": setting_name,
"type": type,
"hint": hint,
"hint_string": hintString
}
if !ProjectSettings.has_setting(setting_name):
ProjectSettings.set_setting(setting_name, default_value)
ProjectSettings.add_property_info(setting_info)
ProjectSettings.set_initial_value(setting_name, default_value)