Przeglądaj źródła

Merge pull request #78326 from KoBeWi/0110010001100101011000110110010101101110011000110111100101011111011001010110010001101001011101000110111101110010

Fix missing UID handling for binary formats
Rémi Verschelde 2 lat temu
rodzic
commit
c209ad222c
1 zmienionych plików z 9 dodań i 0 usunięć
  1. 9 0
      core/io/resource_format_binary.cpp

+ 9 - 0
core/io/resource_format_binary.cpp

@@ -920,8 +920,11 @@ void ResourceLoaderBinary::get_dependencies(Ref<FileAccess> p_f, List<String> *p
 
 	for (int i = 0; i < external_resources.size(); i++) {
 		String dep;
+		String fallback_path;
+
 		if (external_resources[i].uid != ResourceUID::INVALID_ID) {
 			dep = ResourceUID::get_singleton()->id_to_text(external_resources[i].uid);
+			fallback_path = external_resources[i].path; // Used by Dependency Editor, in case uid path fails.
 		} else {
 			dep = external_resources[i].path;
 		}
@@ -929,6 +932,12 @@ void ResourceLoaderBinary::get_dependencies(Ref<FileAccess> p_f, List<String> *p
 		if (p_add_types && !external_resources[i].type.is_empty()) {
 			dep += "::" + external_resources[i].type;
 		}
+		if (!fallback_path.is_empty()) {
+			if (!p_add_types) {
+				dep += "::"; // Ensure that path comes third, even if there is no type.
+			}
+			dep += "::" + fallback_path;
+		}
 
 		p_dependencies->push_back(dep);
 	}