diff options
author | David Snopek <dsnopek@gmail.com> | 2023-09-02 17:26:36 -0500 |
---|---|---|
committer | David Snopek <dsnopek@gmail.com> | 2023-09-04 13:55:48 -0500 |
commit | 3e7a6e058a1fb7ea38a6dd155679db9116fc11d9 (patch) | |
tree | 5417eb2889d29c2c3a79b436f4729877552c2206 /core/object/script_language_extension.h | |
parent | 3f3f865f8a2b9396b16da28ce29c3c7470bf36d4 (diff) | |
download | redot-engine-3e7a6e058a1fb7ea38a6dd155679db9116fc11d9.tar.gz |
Allow implementing `ScriptInstance::validate_property()` from GDExtension
Diffstat (limited to 'core/object/script_language_extension.h')
-rw-r--r-- | core/object/script_language_extension.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/core/object/script_language_extension.h b/core/object/script_language_extension.h index bf5ad3c107..c7218d99a6 100644 --- a/core/object/script_language_extension.h +++ b/core/object/script_language_extension.h @@ -688,7 +688,24 @@ public: return Variant::NIL; } virtual void validate_property(PropertyInfo &p_property) const override { - // TODO + if (native_info->validate_property_func) { + GDExtensionPropertyInfo gdext_prop = { + (GDExtensionVariantType)p_property.type, + &p_property.name, + &p_property.class_name, + (uint32_t)p_property.hint, + &p_property.hint_string, + p_property.usage, + }; + if (native_info->validate_property_func(instance, &gdext_prop)) { + p_property.type = (Variant::Type)gdext_prop.type; + p_property.name = *reinterpret_cast<StringName *>(gdext_prop.name); + p_property.class_name = *reinterpret_cast<StringName *>(gdext_prop.class_name); + p_property.hint = (PropertyHint)gdext_prop.hint; + p_property.hint_string = *reinterpret_cast<String *>(gdext_prop.hint_string); + p_property.usage = gdext_prop.usage; + } + } } virtual bool property_can_revert(const StringName &p_name) const override { |