diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2022-11-22 21:15:21 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2022-11-22 21:15:21 +0100 |
commit | 44edd5b8fdef6f1a2840ba434f19bfd2f59036a1 (patch) | |
tree | 1225aaa3aed58cc0bc1597b1f3a3e4da1c9e087c /core/object/script_language.cpp | |
parent | 1285e0e21c812ab67882b9ca471200dfc9dc1601 (diff) | |
parent | 9187f5c849fc6c7832ab5c1defd1ecc854e8271f (diff) | |
download | redot-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.cpp | 6 |
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; |