aboutsummaryrefslogtreecommitdiff
path: root/core/io/resource_import.cpp
diff options
context:
space:
mode:
authorJuan Linietsky2017-09-20 20:59:19 -0300
committerJuan Linietsky2017-09-20 21:04:20 -0300
commit423ca9bcaf4781abd62db47d6f232c279af72429 (patch)
treea610ea87af0313129fc27fa1f75f3d422eee697e /core/io/resource_import.cpp
parent71e4fae3a1fb8ab684f5366442e5325ebcb99d8d (diff)
downloadgodot-423ca9bcaf4781abd62db47d6f232c279af72429.tar.gz
godot-423ca9bcaf4781abd62db47d6f232c279af72429.tar.zst
godot-423ca9bcaf4781abd62db47d6f232c279af72429.zip
Diffstat (limited to 'core/io/resource_import.cpp')
-rw-r--r--core/io/resource_import.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/core/io/resource_import.cpp b/core/io/resource_import.cpp
index be486a86a..bc7ea4776 100644
--- a/core/io/resource_import.cpp
+++ b/core/io/resource_import.cpp
@@ -87,6 +87,8 @@ Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndTy
path_found = true; //first match must have priority
} else if (assign == "type") {
r_path_and_type.type = value;
+ } else if (assign == "importer") {
+ r_path_and_type.importer = value;
} else if (assign == "valid") {
if (r_valid) {
*r_valid = value;
@@ -184,6 +186,29 @@ bool ResourceFormatImporter::can_be_imported(const String &p_path) const {
return ResourceFormatLoader::recognize_path(p_path);
}
+int ResourceFormatImporter::get_import_order(const String &p_path) const {
+
+ Ref<ResourceImporter> importer;
+
+ if (FileAccess::exists(p_path + ".import")) {
+
+ PathAndType pat;
+ Error err = _get_path_and_type(p_path, pat);
+
+ if (err == OK) {
+ importer = get_importer_by_name(pat.importer);
+ }
+ } else {
+
+ importer = get_importer_by_extension(p_path.get_extension().to_lower());
+ }
+
+ if (importer.is_valid())
+ return importer->get_import_order();
+
+ return 0;
+}
+
bool ResourceFormatImporter::handles_type(const String &p_type) const {
for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
@@ -291,7 +316,7 @@ void ResourceFormatImporter::get_dependencies(const String &p_path, List<String>
return ResourceLoader::get_dependencies(pat.path, p_dependencies, p_add_types);
}
-Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String &p_name) {
+Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String &p_name) const {
for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
if (E->get()->get_importer_name() == p_name) {
@@ -315,7 +340,7 @@ void ResourceFormatImporter::get_importers_for_extension(const String &p_extensi
}
}
-Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const String &p_extension) {
+Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const String &p_extension) const {
Ref<ResourceImporter> importer;
float priority = 0;