diff options
author | George Marques <george@gmarqu.es> | 2022-06-27 18:41:07 -0300 |
---|---|---|
committer | George Marques <george@gmarqu.es> | 2022-06-27 18:42:52 -0300 |
commit | 9490146a164194bc45dfe26b43da1def60e773d9 (patch) | |
tree | a34162b765269e0f3bc57381186f3ca506c52333 | |
parent | c41e4b10c3317f837d4b3ece2fb725a8067d884b (diff) | |
download | redot-engine-9490146a164194bc45dfe26b43da1def60e773d9.tar.gz |
GDScript: Enable exporting nodes to the inspector
Also fix an small issue in the property editor for NodePath trying to
use the meta property when not needed.
-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 0e6c9162ce..7bc01e36f2 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -3026,13 +3026,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; |