summaryrefslogtreecommitdiffstats
path: root/include/godot_cpp/core
diff options
context:
space:
mode:
authorChris Cranford <chris@hibernate.org>2024-04-19 14:43:31 -0400
committerChris Cranford <chris@hibernate.org>2024-04-20 18:50:34 -0400
commit2a041b5240b5f8d22e56ffa0f96e6d5b91acd95f (patch)
tree78ab9ba6bae63462c4f5bb23d70d8bb22b17ed19 /include/godot_cpp/core
parentad307e4b9ceb2efc40a238c19d37f41def4742d6 (diff)
downloadredot-cpp-2a041b5240b5f8d22e56ffa0f96e6d5b91acd95f.tar.gz
Implement to/from dict helpers for PropertyInfo/MethodInfo
Diffstat (limited to 'include/godot_cpp/core')
-rw-r--r--include/godot_cpp/core/property_info.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/godot_cpp/core/property_info.hpp b/include/godot_cpp/core/property_info.hpp
index 84d5c57..dd71d48 100644
--- a/include/godot_cpp/core/property_info.hpp
+++ b/include/godot_cpp/core/property_info.hpp
@@ -72,6 +72,40 @@ struct PropertyInfo {
PropertyInfo(const GDExtensionPropertyInfo *p_info) :
PropertyInfo(p_info->type, *reinterpret_cast<StringName *>(p_info->name), (PropertyHint)p_info->hint, *reinterpret_cast<String *>(p_info->hint_string), p_info->usage, *reinterpret_cast<StringName *>(p_info->class_name)) {}
+ operator Dictionary() const {
+ Dictionary dict;
+ dict["name"] = name;
+ dict["class_name"] = class_name;
+ dict["type"] = type;
+ dict["hint"] = hint;
+ dict["hint_string"] = hint_string;
+ dict["usage"] = usage;
+ return dict;
+ }
+
+ static PropertyInfo from_dict(const Dictionary &p_dict) {
+ PropertyInfo pi;
+ if (p_dict.has("type")) {
+ pi.type = Variant::Type(int(p_dict["type"]));
+ }
+ if (p_dict.has("name")) {
+ pi.name = p_dict["name"];
+ }
+ if (p_dict.has("class_name")) {
+ pi.class_name = p_dict["class_name"];
+ }
+ if (p_dict.has("hint")) {
+ pi.hint = PropertyHint(int(p_dict["hint"]));
+ }
+ if (p_dict.has("hint_string")) {
+ pi.hint_string = p_dict["hint_string"];
+ }
+ if (p_dict.has("usage")) {
+ pi.usage = p_dict["usage"];
+ }
+ return pi;
+ }
+
void _update(GDExtensionPropertyInfo *p_info) {
p_info->type = (GDExtensionVariantType)type;
*(reinterpret_cast<StringName *>(p_info->name)) = name;