From 9187f5c849fc6c7832ab5c1defd1ecc854e8271f Mon Sep 17 00:00:00 2001 From: "ocean (they/them)" Date: Sun, 6 Nov 2022 23:21:43 -0500 Subject: [PATCH] Fixes inability to assign script after clearing --- core/object/script_language.cpp | 6 ++++-- editor/editor_properties.cpp | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/object/script_language.cpp b/core/object/script_language.cpp index 056c57a5f1e6..36a0d03aaf38 100644 --- a/core/object/script_language.cpp +++ b/core/object/script_language.cpp @@ -409,7 +409,9 @@ bool PlaceHolderScriptInstance::set(const StringName &p_name, const Variant &p_v if (values.has(p_name)) { Variant defval; if (script->get_property_default_value(p_name, defval)) { - if (defval == p_value) { + // The evaluate function ensures that a NIL variant is equal to e.g. an empty Resource. + // Simply doing defval == p_value does not do this. + if (Variant::evaluate(Variant::OP_EQUAL, defval, p_value)) { values.erase(p_name); return true; } @@ -419,7 +421,7 @@ bool PlaceHolderScriptInstance::set(const StringName &p_name, const Variant &p_v } else { Variant defval; if (script->get_property_default_value(p_name, defval)) { - if (defval != p_value) { + if (Variant::evaluate(Variant::OP_NOT_EQUAL, defval, p_value)) { values[p_name] = p_value; } return true; diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 30e4710444e2..8c53f576acc3 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -31,6 +31,7 @@ #include "editor_properties.h" #include "core/config/project_settings.h" +#include "core/core_string_names.h" #include "editor/editor_file_dialog.h" #include "editor/editor_node.h" #include "editor/editor_properties_array_dict.h" @@ -3844,8 +3845,11 @@ void EditorPropertyResource::_resource_selected(const Ref &p_resource, void EditorPropertyResource::_resource_changed(const Ref &p_resource) { // Make visual script the correct type. Ref