diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index 9fe54e57a7a..01f15f9c8e4 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -1167,22 +1167,16 @@ bool ProjectSettings::is_project_loaded() const { } bool ProjectSettings::_property_can_revert(const StringName &p_name) const { - if (!props.has(p_name)) { - return false; - } - - return props[p_name].initial != props[p_name].variant; + return props.has(p_name); } bool ProjectSettings::_property_get_revert(const StringName &p_name, Variant &r_property) const { - if (!props.has(p_name)) { - return false; + const RBMap::Element *value = props.find(p_name); + if (value) { + r_property = value->value().initial.duplicate(); + return true; } - - // Duplicate so that if value is array or dictionary, changing the setting will not change the stored initial value. - r_property = props[p_name].initial.duplicate(); - - return true; + return false; } void ProjectSettings::set_setting(const String &p_setting, const Variant &p_value) { diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index ee06f08a2d7..12a7c3a2ff8 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -1424,24 +1424,20 @@ Variant _EDITOR_GET(const String &p_setting) { } bool EditorSettings::_property_can_revert(const StringName &p_name) const { - if (!props.has(p_name)) { - return false; + const VariantContainer *property = props.getptr(p_name); + if (property) { + return property->has_default_value; } - - if (!props[p_name].has_default_value) { - return false; - } - - return props[p_name].initial != props[p_name].variant; + return false; } bool EditorSettings::_property_get_revert(const StringName &p_name, Variant &r_property) const { - if (!props.has(p_name) || !props[p_name].has_default_value) { - return false; + const VariantContainer *value = props.getptr(p_name); + if (value && value->has_default_value) { + r_property = value->initial; + return true; } - - r_property = props[p_name].initial; - return true; + return false; } void EditorSettings::add_property_hint(const PropertyInfo &p_hint) { diff --git a/editor/multi_node_edit.cpp b/editor/multi_node_edit.cpp index 45786c0ab5e..ef6a9c9a88b 100644 --- a/editor/multi_node_edit.cpp +++ b/editor/multi_node_edit.cpp @@ -186,25 +186,9 @@ bool MultiNodeEdit::_property_can_revert(const StringName &p_name) const { } if (ClassDB::has_property(get_edited_class_name(), p_name)) { - StringName class_name; for (const NodePath &E : nodes) { Node *node = es->get_node_or_null(E); - if (!node) { - continue; - } - - class_name = node->get_class_name(); - } - - Variant default_value = ClassDB::class_get_default_property_value(class_name, p_name); - for (const NodePath &E : nodes) { - Node *node = es->get_node_or_null(E); - if (!node) { - continue; - } - - if (node->get(p_name) != default_value) { - // A node that doesn't have the default value has been found, so show the revert button. + if (node) { return true; } } diff --git a/editor/plugins/font_config_plugin.cpp b/editor/plugins/font_config_plugin.cpp index ec9513363d1..6366d205399 100644 --- a/editor/plugins/font_config_plugin.cpp +++ b/editor/plugins/font_config_plugin.cpp @@ -121,13 +121,8 @@ bool EditorPropertyFontOTObject::_property_can_revert(const StringName &p_name) if (name.begins_with("keys")) { int key = name.get_slicec('/', 1).to_int(); - if (defaults_dict.has(key) && dict.has(key)) { - int value = dict[key]; - Vector3i range = defaults_dict[key]; - return range.z != value; - } + return defaults_dict.has(key) && dict.has(key); } - return false; } @@ -142,7 +137,6 @@ bool EditorPropertyFontOTObject::_property_get_revert(const StringName &p_name, return true; } } - return false; } diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp index 86ce8a881a2..85de85a9a67 100644 --- a/scene/3d/node_3d.cpp +++ b/scene/3d/node_3d.cpp @@ -1181,15 +1181,16 @@ void Node3D::_validate_property(PropertyInfo &p_property) const { } bool Node3D::_property_can_revert(const StringName &p_name) const { - if (p_name == "basis") { + const String sname = p_name; + if (sname == "basis") { return true; - } else if (p_name == "scale") { + } else if (sname == "scale") { return true; - } else if (p_name == "quaternion") { + } else if (sname == "quaternion") { return true; - } else if (p_name == "rotation") { + } else if (sname == "rotation") { return true; - } else if (p_name == "position") { + } else if (sname == "position") { return true; } return false; @@ -1198,35 +1199,36 @@ bool Node3D::_property_can_revert(const StringName &p_name) const { bool Node3D::_property_get_revert(const StringName &p_name, Variant &r_property) const { bool valid = false; - if (p_name == "basis") { + const String sname = p_name; + if (sname == "basis") { Variant variant = PropertyUtils::get_property_default_value(this, "transform", &valid); if (valid && variant.get_type() == Variant::Type::TRANSFORM3D) { r_property = Transform3D(variant).get_basis(); } else { r_property = Basis(); } - } else if (p_name == "scale") { + } else if (sname == "scale") { Variant variant = PropertyUtils::get_property_default_value(this, "transform", &valid); if (valid && variant.get_type() == Variant::Type::TRANSFORM3D) { r_property = Transform3D(variant).get_basis().get_scale(); } else { r_property = Vector3(1.0, 1.0, 1.0); } - } else if (p_name == "quaternion") { + } else if (sname == "quaternion") { Variant variant = PropertyUtils::get_property_default_value(this, "transform", &valid); if (valid && variant.get_type() == Variant::Type::TRANSFORM3D) { r_property = Quaternion(Transform3D(variant).get_basis().get_rotation_quaternion()); } else { r_property = Quaternion(); } - } else if (p_name == "rotation") { + } else if (sname == "rotation") { Variant variant = PropertyUtils::get_property_default_value(this, "transform", &valid); if (valid && variant.get_type() == Variant::Type::TRANSFORM3D) { r_property = Transform3D(variant).get_basis().get_euler_normalized(data.euler_rotation_order); } else { r_property = Vector3(); } - } else if (p_name == "position") { + } else if (sname == "position") { Variant variant = PropertyUtils::get_property_default_value(this, "transform", &valid); if (valid) { r_property = Transform3D(variant).get_origin(); diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 9df009ec28c..ecc1982aa5e 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -382,14 +382,11 @@ void ShaderMaterial::_get_property_list(List *p_list) const { bool ShaderMaterial::_property_can_revert(const StringName &p_name) const { if (shader.is_valid()) { - const StringName *pr = remap_cache.getptr(p_name); - if (pr) { - Variant default_value = RenderingServer::get_singleton()->shader_get_parameter_default(shader->get_rid(), *pr); - Variant current_value = get_shader_parameter(*pr); - return default_value.get_type() != Variant::NIL && default_value != current_value; - } else if (p_name == "render_priority" || p_name == "next_pass") { + if (remap_cache.has(p_name)) { return true; } + const String sname = p_name; + return sname == "render_priority" || sname == "next_pass"; } return false; }