|
@@ -69,10 +69,31 @@ void ResourceFormatSaver::get_recognized_extensions(const Ref<Resource> &p_resou
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool ResourceFormatSaver::recognize_path(const Ref<Resource> &p_resource, const String &p_path) const {
|
|
|
|
+ bool ret = false;
|
|
|
|
+ if (GDVIRTUAL_CALL(_recognize_path, p_resource, p_path, ret)) {
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String extension = p_path.get_extension();
|
|
|
|
+
|
|
|
|
+ List<String> extensions;
|
|
|
|
+ get_recognized_extensions(p_resource, &extensions);
|
|
|
|
+
|
|
|
|
+ for (const String &E : extensions) {
|
|
|
|
+ if (E.nocasecmp_to(extension) == 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+}
|
|
|
|
+
|
|
void ResourceFormatSaver::_bind_methods() {
|
|
void ResourceFormatSaver::_bind_methods() {
|
|
GDVIRTUAL_BIND(_save, "resource", "path", "flags");
|
|
GDVIRTUAL_BIND(_save, "resource", "path", "flags");
|
|
GDVIRTUAL_BIND(_recognize, "resource");
|
|
GDVIRTUAL_BIND(_recognize, "resource");
|
|
GDVIRTUAL_BIND(_get_recognized_extensions, "resource");
|
|
GDVIRTUAL_BIND(_get_recognized_extensions, "resource");
|
|
|
|
+ GDVIRTUAL_BIND(_recognize_path, "resource", "path");
|
|
}
|
|
}
|
|
|
|
|
|
Error ResourceSaver::save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags) {
|
|
Error ResourceSaver::save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags) {
|
|
@@ -90,17 +111,7 @@ Error ResourceSaver::save(const Ref<Resource> &p_resource, const String &p_path,
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
- List<String> extensions;
|
|
|
|
- bool recognized = false;
|
|
|
|
- saver[i]->get_recognized_extensions(p_resource, &extensions);
|
|
|
|
-
|
|
|
|
- for (const String &E : extensions) {
|
|
|
|
- if (E.nocasecmp_to(extension) == 0) {
|
|
|
|
- recognized = true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (!recognized) {
|
|
|
|
|
|
+ if (!saver[i]->recognize_path(p_resource, path)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|