diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index e5105fdedce..aff328bba75 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(this)->get_edited_object()->get(_get_meta_pointer_property(), &r_valid); + return const_cast(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 9e347eed5a2..ca430b0f727 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;