diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-06-28 08:07:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-28 08:07:00 +0200 |
commit | 4c14bf74820a780d11c786cff8b935b2c64bf3bf (patch) | |
tree | 452562114221226f16ce214285fc20d37d39f2c5 | |
parent | b863c40356b4b95192d1a1e2718db7d7aced4235 (diff) | |
parent | 9490146a164194bc45dfe26b43da1def60e773d9 (diff) |
Merge pull request #62470 from vnen/gdscript-export-nodes
GDScript: Enable exporting nodes to the inspector
-rw-r--r-- | editor/editor_properties.cpp | 8 | ||||
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index e5105fdedc..aff328bba7 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -3035,13 +3035,17 @@ String EditorPropertyNodePath::_get_meta_pointer_property() const { Variant EditorPropertyNodePath::_get_cache_value(const StringName &p_prop, bool &r_valid) const { if (p_prop == get_edited_property()) { r_valid = true; - return const_cast<EditorPropertyNodePath *>(this)->get_edited_object()->get(_get_meta_pointer_property(), &r_valid); + return const_cast<EditorPropertyNodePath *>(this)->get_edited_object()->get(pointer_mode ? StringName(_get_meta_pointer_property()) : get_edited_property(), &r_valid); } return Variant(); } StringName EditorPropertyNodePath::_get_revert_property() const { - return _get_meta_pointer_property(); + if (pointer_mode) { + return _get_meta_pointer_property(); + } else { + return get_edited_property(); + } } void EditorPropertyNodePath::_node_selected(const NodePath &p_path) { diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 9e347eed5a..ca430b0f72 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -3605,8 +3605,12 @@ bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node variable->export_info.type = Variant::OBJECT; variable->export_info.hint = PROPERTY_HINT_RESOURCE_TYPE; variable->export_info.hint_string = export_type.native_type; + } else if (ClassDB::is_parent_class(export_type.native_type, SNAME("Node"))) { + variable->export_info.type = Variant::OBJECT; + variable->export_info.hint = PROPERTY_HINT_NODE_TYPE; + variable->export_info.hint_string = export_type.native_type; } else { - push_error(R"(Export type can only be built-in, a resource, or an enum.)", variable); + push_error(R"(Export type can only be built-in, a resource, a node, or an enum.)", variable); return false; } break; |