|
@@ -3765,13 +3765,19 @@ bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node
|
|
break;
|
|
break;
|
|
case GDScriptParser::DataType::CLASS:
|
|
case GDScriptParser::DataType::CLASS:
|
|
// Can assume type is a global GDScript class.
|
|
// Can assume type is a global GDScript class.
|
|
- if (!ClassDB::is_parent_class(export_type.native_type, SNAME("Resource"))) {
|
|
|
|
- push_error(R"(Exported script type must extend Resource.)");
|
|
|
|
|
|
+ if (ClassDB::is_parent_class(export_type.native_type, SNAME("Resource"))) {
|
|
|
|
+ variable->export_info.type = Variant::OBJECT;
|
|
|
|
+ variable->export_info.hint = PROPERTY_HINT_RESOURCE_TYPE;
|
|
|
|
+ variable->export_info.hint_string = export_type.class_type->identifier->name;
|
|
|
|
+ } 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.class_type->identifier->name;
|
|
|
|
+ } else {
|
|
|
|
+ push_error(R"(Export type can only be built-in, a resource, a node or an enum.)", variable);
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- variable->export_info.type = Variant::OBJECT;
|
|
|
|
- variable->export_info.hint = PROPERTY_HINT_RESOURCE_TYPE;
|
|
|
|
- variable->export_info.hint_string = export_type.class_type->identifier->name;
|
|
|
|
|
|
+
|
|
break;
|
|
break;
|
|
case GDScriptParser::DataType::SCRIPT: {
|
|
case GDScriptParser::DataType::SCRIPT: {
|
|
StringName class_name;
|
|
StringName class_name;
|