Parcourir la source

Bugfix: Fixing issues caused by project library meta file having no referenced resource metas

BearishSun il y a 6 ans
Parent
commit
5a701d067d

+ 9 - 3
Source/EditorCore/Library/BsProjectLibrary.cpp

@@ -588,7 +588,8 @@ namespace bs
 				if (fileEntry->meta != nullptr)
 				{
 					auto& resourceMetas = fileEntry->meta->getResourceMetaData();
-					mResourceManifest->registerResource(resourceMetas[0]->getUUID(), fileEntry->path);
+					if(!resourceMetas.empty())
+						mResourceManifest->registerResource(resourceMetas[0]->getUUID(), fileEntry->path);
 				}
 
 				const auto importAsync = [queuedImportWeak, &projectFolder = mProjectFolder, &mutex = mQueuedImportMutex]()
@@ -598,7 +599,7 @@ namespace bs
 					SPtr<QueuedImport> queuedImport = queuedImportWeak.lock();
 					HResource resource = gResources().load(queuedImport->filePath, ResourceLoadFlag::KeepSourceData);
 
-					if (resource)
+					if (resource.isLoaded(false))
 					{
 						Path outputPath = projectFolder;
 						outputPath.append(INTERNAL_TEMP_DIR);
@@ -1080,7 +1081,12 @@ namespace bs
 			if (fileEntry->meta == nullptr)
 				return nullptr;
 
-			return fileEntry->meta->getResourceMetaData()[0];
+			auto& resourceMetas = fileEntry->meta->getResourceMetaData();
+
+			if(!resourceMetas.empty())
+				return resourceMetas[0];
+
+			return nullptr;
 		}
 	}
 

+ 3 - 0
Source/EditorScript/BsEditorResourceLoader.cpp

@@ -26,7 +26,10 @@ namespace bs
 		// this could be optimized so only one of them is called.
 		SPtr<ProjectResourceMeta> meta = gProjectLibrary().findResourceMeta(path);
 		if (meta == nullptr)
+		{
 			BS_LOG(Warning, Editor, "Unable to load resource at path: \"{0}\". File not found. ", path);
+			return HResource();
+		}
 
 		UUID resUUID = meta->getUUID();
 

+ 1 - 1
Source/bsf

@@ -1 +1 @@
-Subproject commit c1fc166d7b91b2ed5c4296f090f163479d1b1927
+Subproject commit 20c61ebb0cfc84c0eff2e3d1b9138a064524c8a6