summaryrefslogtreecommitdiffstats
path: root/core/object/script_language.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2022-11-22 21:15:21 +0100
committerRémi Verschelde <rverschelde@gmail.com>2022-11-22 21:15:21 +0100
commit44edd5b8fdef6f1a2840ba434f19bfd2f59036a1 (patch)
tree1225aaa3aed58cc0bc1597b1f3a3e4da1c9e087c /core/object/script_language.cpp
parent1285e0e21c812ab67882b9ca471200dfc9dc1601 (diff)
parent9187f5c849fc6c7832ab5c1defd1ecc854e8271f (diff)
downloadredot-engine-44edd5b8fdef6f1a2840ba434f19bfd2f59036a1.tar.gz
Merge pull request #68354 from anvilfolk/cant-clear-script
Fixes inability to assign script after clearing
Diffstat (limited to 'core/object/script_language.cpp')
-rw-r--r--core/object/script_language.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/core/object/script_language.cpp b/core/object/script_language.cpp
index 056c57a5f1..36a0d03aaf 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;