From fdf31011a5014a48ffcc204d35082c5bae003232 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Fri, 19 Apr 2024 13:51:28 -0400 Subject: [PATCH] Expose ClassDB::class_get_property_default_value method --- core/core_bind.cpp | 11 +++++++++++ core/core_bind.h | 2 ++ doc/classes/ClassDB.xml | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/core/core_bind.cpp b/core/core_bind.cpp index 8c850307831..d61670ecb7a 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -1439,6 +1439,15 @@ Error ClassDB::class_set_property(Object *p_object, const StringName &p_property return OK; } +Variant ClassDB::class_get_property_default_value(const StringName &p_class, const StringName &p_property) const { + bool valid; + Variant ret = ::ClassDB::class_get_default_property_value(p_class, p_property, &valid); + if (valid) { + return ret; + } + return Variant(); +} + bool ClassDB::class_has_method(const StringName &p_class, const StringName &p_method, bool p_no_inheritance) const { return ::ClassDB::has_method(p_class, p_method, p_no_inheritance); } @@ -1573,6 +1582,8 @@ void ClassDB::_bind_methods() { ::ClassDB::bind_method(D_METHOD("class_get_property", "object", "property"), &ClassDB::class_get_property); ::ClassDB::bind_method(D_METHOD("class_set_property", "object", "property", "value"), &ClassDB::class_set_property); + ::ClassDB::bind_method(D_METHOD("class_get_property_default_value", "class", "property"), &ClassDB::class_get_property_default_value); + ::ClassDB::bind_method(D_METHOD("class_has_method", "class", "method", "no_inheritance"), &ClassDB::class_has_method, DEFVAL(false)); ::ClassDB::bind_method(D_METHOD("class_get_method_argument_count", "class", "method", "no_inheritance"), &ClassDB::class_get_method_argument_count, DEFVAL(false)); diff --git a/core/core_bind.h b/core/core_bind.h index d46321cf5c2..5711662a18b 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -446,6 +446,8 @@ public: Variant class_get_property(Object *p_object, const StringName &p_property) const; Error class_set_property(Object *p_object, const StringName &p_property, const Variant &p_value) const; + Variant class_get_property_default_value(const StringName &p_class, const StringName &p_property) const; + bool class_has_method(const StringName &p_class, const StringName &p_method, bool p_no_inheritance = false) const; int class_get_method_argument_count(const StringName &p_class, const StringName &p_method, bool p_no_inheritance = false) const; diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml index 3f714060919..fa430c0a835 100644 --- a/doc/classes/ClassDB.xml +++ b/doc/classes/ClassDB.xml @@ -91,6 +91,14 @@ Returns the value of [param property] of [param object] or its ancestry. + + + + + + Returns the default value of [param property] of [param class] or its ancestor classes. + +