mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
Add GDScript resource export.
This commit is contained in:
parent
4ab3fdcda0
commit
339aba1656
2 changed files with 83 additions and 30 deletions
|
@ -3758,6 +3758,33 @@ bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node
|
|||
return false;
|
||||
}
|
||||
break;
|
||||
case GDScriptParser::DataType::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.)");
|
||||
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;
|
||||
case GDScriptParser::DataType::SCRIPT: {
|
||||
StringName class_name;
|
||||
if (export_type.script_type != nullptr && export_type.script_type.is_valid()) {
|
||||
class_name = export_type.script_type->get_language()->get_global_class_name(export_type.script_type->get_path());
|
||||
}
|
||||
if (class_name == StringName()) {
|
||||
Ref<Script> script = ResourceLoader::load(export_type.script_path, SNAME("Script"));
|
||||
if (script.is_valid()) {
|
||||
class_name = script->get_language()->get_global_class_name(export_type.script_path);
|
||||
}
|
||||
}
|
||||
if (class_name != StringName() && ClassDB::is_parent_class(ScriptServer::get_global_class_native_base(class_name), SNAME("Resource"))) {
|
||||
variable->export_info.type = Variant::OBJECT;
|
||||
variable->export_info.hint = PROPERTY_HINT_RESOURCE_TYPE;
|
||||
variable->export_info.hint_string = class_name;
|
||||
}
|
||||
} break;
|
||||
case GDScriptParser::DataType::ENUM: {
|
||||
variable->export_info.type = Variant::INT;
|
||||
variable->export_info.hint = PROPERTY_HINT_ENUM;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue