Просмотр исходного кода

Fixing an issue with incremental builtin resource import

BearishSun 8 лет назад
Родитель
Сommit
3cdb09158f

+ 10 - 6
Source/BansheeEditor/Source/BsBuiltinEditorResources.cpp

@@ -333,24 +333,28 @@ namespace bs
 
 		if (modifications > 0)
 		{
+			bool forceReimport = modifications == 2;
+
 			SPtr<ResourceManifest> oldResourceManifest;
-			if (FileSystem::exists(ResourceManifestPath))
+			if (!forceReimport && FileSystem::exists(ResourceManifestPath))
 			{
 				oldResourceManifest = ResourceManifest::load(ResourceManifestPath, BuiltinDataFolder);
 				if(oldResourceManifest != nullptr)
 					gResources().registerResourceManifest(oldResourceManifest);
 			}
 
-			mResourceManifest = ResourceManifest::create("BuiltinResources");
-			gResources().registerResourceManifest(mResourceManifest);
+			if (oldResourceManifest)
+				mResourceManifest = oldResourceManifest;
+			else
+			{
+				mResourceManifest = ResourceManifest::create("BuiltinResources");
+				gResources().registerResourceManifest(mResourceManifest);
+			}
 
 			preprocess(modifications == 2, lastUpdateTime);
 			BuiltinResourcesHelper::writeTimestamp(BuiltinDataFolder + L"Timestamp.asset");
 
 			ResourceManifest::save(mResourceManifest, ResourceManifestPath, BuiltinDataFolder);
-
-			if (oldResourceManifest != nullptr)
-				gResources().unregisterResourceManifest(oldResourceManifest);
 		}
 #endif
 

+ 11 - 7
Source/BansheeEngine/Source/BsBuiltinResources.cpp

@@ -244,24 +244,28 @@ namespace bs
 
 			if (modifications > 0)
 			{
+				bool fullReimport = modifications == 2;
+
 				SPtr<ResourceManifest> oldResourceManifest;
-				if (FileSystem::exists(ResourceManifestPath))
+				if (!fullReimport && FileSystem::exists(ResourceManifestPath))
 				{
 					oldResourceManifest = ResourceManifest::load(ResourceManifestPath, mBuiltinDataFolder);
 					if (oldResourceManifest != nullptr)
 						gResources().registerResourceManifest(oldResourceManifest);
 				}
 
-				mResourceManifest = ResourceManifest::create("BuiltinResources");
-				gResources().registerResourceManifest(mResourceManifest);
+				if (oldResourceManifest)
+					mResourceManifest = oldResourceManifest;
+				else
+				{
+					mResourceManifest = ResourceManifest::create("BuiltinResources");
+					gResources().registerResourceManifest(mResourceManifest);
+				}
 
-				preprocess(modifications == 2, lastUpdateTime);
+				preprocess(fullReimport, lastUpdateTime);
 				BuiltinResourcesHelper::writeTimestamp(mBuiltinDataFolder + L"Timestamp.asset");
 
 				ResourceManifest::save(mResourceManifest, ResourceManifestPath, mBuiltinDataFolder);
-
-				if (oldResourceManifest != nullptr)
-					gResources().unregisterResourceManifest(oldResourceManifest);
 			}
 		}
 #endif