diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index 1bfb7456627b..9ffbac3553e8 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -249,6 +249,11 @@ bool ProjectSettings::get_ignore_value_in_docs(const String &p_name) const { #endif } +void ProjectSettings::add_hidden_prefix(const String &p_prefix) { + ERR_FAIL_COND_MSG(hidden_prefixes.find(p_prefix) > -1, vformat("Hidden prefix '%s' already exists.", p_prefix)); + hidden_prefixes.push_back(p_prefix); +} + String ProjectSettings::globalize_path(const String &p_path) const { if (p_path.begins_with("res://")) { if (!resource_path.is_empty()) { @@ -388,7 +393,18 @@ void ProjectSettings::_get_property_list(List *p_list) const { vc.name = E.key; vc.order = v->order; vc.type = v->variant.get_type(); - if (v->internal || vc.name.begins_with("input/") || vc.name.begins_with("importer_defaults/") || vc.name.begins_with("import/") || vc.name.begins_with("autoload/") || vc.name.begins_with("editor_plugins/") || vc.name.begins_with("shader_globals/")) { + + bool internal = v->internal; + if (!internal) { + for (const String &F : hidden_prefixes) { + if (vc.name.begins_with(F)) { + internal = true; + break; + } + } + } + + if (internal) { vc.flags = PROPERTY_USAGE_STORAGE; } else { vc.flags = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_STORAGE; @@ -1382,11 +1398,13 @@ ProjectSettings::ProjectSettings() { GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "rendering/textures/canvas_textures/default_texture_filter", PROPERTY_HINT_ENUM, "Nearest,Linear,Linear Mipmap,Nearest Mipmap"), 1); GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "rendering/textures/canvas_textures/default_texture_repeat", PROPERTY_HINT_ENUM, "Disable,Enable,Mirror"), 0); - // These properties will not show up in the dialog nor in the documentation. If you want to exclude whole groups, see _get_property_list() method. + // These properties will not show up in the dialog. If you want to exclude whole groups, use add_hidden_prefix(). GLOBAL_DEF_INTERNAL("application/config/features", PackedStringArray()); GLOBAL_DEF_INTERNAL("internationalization/locale/translation_remaps", PackedStringArray()); GLOBAL_DEF_INTERNAL("internationalization/locale/translations", PackedStringArray()); GLOBAL_DEF_INTERNAL("internationalization/locale/translations_pot_files", PackedStringArray()); + + ProjectSettings::get_singleton()->add_hidden_prefix("input/"); } ProjectSettings::~ProjectSettings() { diff --git a/core/config/project_settings.h b/core/config/project_settings.h index dba4aa6822da..302df7e8d061 100644 --- a/core/config/project_settings.h +++ b/core/config/project_settings.h @@ -104,6 +104,7 @@ protected: HashSet custom_features; HashMap>> feature_overrides; + LocalVector hidden_prefixes; HashMap autoloads; Array global_class_list; @@ -168,6 +169,7 @@ public: void set_restart_if_changed(const String &p_name, bool p_restart); void set_ignore_value_in_docs(const String &p_name, bool p_ignore); bool get_ignore_value_in_docs(const String &p_name) const; + void add_hidden_prefix(const String &p_prefix); String get_project_data_dir_name() const; String get_project_data_path() const; diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp index 7a1dc2e33b08..5bcef467f6fc 100644 --- a/editor/editor_autoload_settings.cpp +++ b/editor/editor_autoload_settings.cpp @@ -816,6 +816,8 @@ void EditorAutoloadSettings::_bind_methods() { } EditorAutoloadSettings::EditorAutoloadSettings() { + ProjectSettings::get_singleton()->add_hidden_prefix("autoload/"); + // Make first cache List props; ProjectSettings::get_singleton()->get_property_list(&props); diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index 7f57619ac8d4..453ae7626624 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -205,6 +205,8 @@ void EditorPluginSettings::_bind_methods() { } EditorPluginSettings::EditorPluginSettings() { + ProjectSettings::get_singleton()->add_hidden_prefix("editor_plugins/"); + plugin_config_dialog = memnew(PluginConfigDialog); plugin_config_dialog->config(""); add_child(plugin_config_dialog); diff --git a/editor/import_defaults_editor.cpp b/editor/import_defaults_editor.cpp index 98a9bfe9dcee..a2fbff489274 100644 --- a/editor/import_defaults_editor.cpp +++ b/editor/import_defaults_editor.cpp @@ -201,6 +201,8 @@ void ImportDefaultsEditor::_bind_methods() { } ImportDefaultsEditor::ImportDefaultsEditor() { + ProjectSettings::get_singleton()->add_hidden_prefix("importer_defaults/"); + HBoxContainer *hb = memnew(HBoxContainer); hb->add_child(memnew(Label(TTR("Importer:")))); importers = memnew(OptionButton); diff --git a/editor/shader_globals_editor.cpp b/editor/shader_globals_editor.cpp index 8e59e55b5110..ead0eeeae35a 100644 --- a/editor/shader_globals_editor.cpp +++ b/editor/shader_globals_editor.cpp @@ -424,6 +424,8 @@ void ShaderGlobalsEditor::_notification(int p_what) { } ShaderGlobalsEditor::ShaderGlobalsEditor() { + ProjectSettings::get_singleton()->add_hidden_prefix("shader_globals/"); + HBoxContainer *add_menu_hb = memnew(HBoxContainer); add_child(add_menu_hb);