diff options
| author | kobewi <kobewi4e@gmail.com> | 2023-04-07 14:01:57 +0200 |
|---|---|---|
| committer | kobewi <kobewi4e@gmail.com> | 2023-08-28 15:18:48 +0200 |
| commit | 67db4693ebdc972eae2395fecd39dc174045b980 (patch) | |
| tree | 54bd2a4097fd2b744459e45f3f14a66895a46cb2 /core/object | |
| parent | 713bfaf5eac1eb8a770e5ee825db29de99f3d0f7 (diff) | |
| download | redot-engine-67db4693ebdc972eae2395fecd39dc174045b980.tar.gz | |
Expose _validate_property() for scripting
Diffstat (limited to 'core/object')
| -rw-r--r-- | core/object/object.cpp | 6 | ||||
| -rw-r--r-- | core/object/script_language.h | 2 | ||||
| -rw-r--r-- | core/object/script_language_extension.h | 3 |
3 files changed, 11 insertions, 0 deletions
diff --git a/core/object/object.cpp b/core/object/object.cpp index 4ae0ecdefd..b803d57cd9 100644 --- a/core/object/object.cpp +++ b/core/object/object.cpp @@ -526,6 +526,10 @@ void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) cons void Object::validate_property(PropertyInfo &p_property) const { _validate_propertyv(p_property); + + if (script_instance) { // Call it last to allow user altering already validated properties. + script_instance->validate_property(p_property); + } } bool Object::property_can_revert(const StringName &p_name) const { @@ -1604,6 +1608,8 @@ void Object::_bind_methods() { plget.return_val.hint_string = "Dictionary"; BIND_OBJ_CORE_METHOD(plget); + BIND_OBJ_CORE_METHOD(MethodInfo(Variant::NIL, "_validate_property", PropertyInfo(Variant::DICTIONARY, "property"))); + BIND_OBJ_CORE_METHOD(MethodInfo(Variant::BOOL, "_property_can_revert", PropertyInfo(Variant::STRING_NAME, "property"))); MethodInfo mipgr("_property_get_revert", PropertyInfo(Variant::STRING_NAME, "property")); mipgr.return_val.name = "Variant"; diff --git a/core/object/script_language.h b/core/object/script_language.h index 3ea6a6e4c3..1661e97c95 100644 --- a/core/object/script_language.h +++ b/core/object/script_language.h @@ -179,6 +179,7 @@ public: virtual bool get(const StringName &p_name, Variant &r_ret) const = 0; virtual void get_property_list(List<PropertyInfo> *p_properties) const = 0; virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid = nullptr) const = 0; + virtual void validate_property(PropertyInfo &p_property) const = 0; virtual bool property_can_revert(const StringName &p_name) const = 0; virtual bool property_get_revert(const StringName &p_name, Variant &r_ret) const = 0; @@ -462,6 +463,7 @@ public: virtual bool get(const StringName &p_name, Variant &r_ret) const override; virtual void get_property_list(List<PropertyInfo> *p_properties) const override; virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid = nullptr) const override; + virtual void validate_property(PropertyInfo &p_property) const override {} virtual bool property_can_revert(const StringName &p_name) const override { return false; }; virtual bool property_get_revert(const StringName &p_name, Variant &r_ret) const override { return false; }; diff --git a/core/object/script_language_extension.h b/core/object/script_language_extension.h index 1a0ec29479..1aa3350de4 100644 --- a/core/object/script_language_extension.h +++ b/core/object/script_language_extension.h @@ -675,6 +675,9 @@ public: } return Variant::NIL; } + virtual void validate_property(PropertyInfo &p_property) const override { + // TODO + } virtual bool property_can_revert(const StringName &p_name) const override { if (native_info->property_can_revert_func) { |
