@@ -205,11 +205,25 @@ bool UPrepareAssetsForCookingCommandlet::SaveWorld(
205
205
return bPackageSaved;
206
206
}
207
207
208
- FAssetsPaths UPrepareAssetsForCookingCommandlet::GetAssetsPathFromPackage (const FString &PackageName) const
208
+ FString UPrepareAssetsForCookingCommandlet::GetFirstPackagePath (const FString &PackageName) const
209
209
{
210
+ // Get all Package names
211
+ TArray<FString> PackageList;
212
+ IFileManager::Get ().FindFilesRecursive (PackageList, *(FPaths::ProjectContentDir ()),
213
+ *(PackageName + TEXT (" .Package.json" )), true , false , false );
210
214
211
- FString PackageConfigPath = FPaths::ProjectContentDir () + PackageName + TEXT (" /Config/" );
212
- FString PackageJsonFilePath = PackageConfigPath + PackageName + TEXT (" .Package.json" );
215
+ if (PackageList.Num () == 0 )
216
+ {
217
+ UE_LOG (LogTemp, Error, TEXT (" Package json file not found." ));
218
+ return {};
219
+ }
220
+
221
+ return IFileManager::Get ().ConvertToAbsolutePathForExternalAppForRead (*PackageList[0 ]);
222
+ }
223
+
224
+ FAssetsPaths UPrepareAssetsForCookingCommandlet::GetAssetsPathFromPackage (const FString &PackageName) const
225
+ {
226
+ FString PackageJsonFilePath = GetFirstPackagePath (PackageName);
213
227
214
228
FAssetsPaths AssetsPaths;
215
229
@@ -282,6 +296,11 @@ bool UPrepareAssetsForCookingCommandlet::SavePackage(const FString &PackagePath,
282
296
FString PackageFileName = FPackageName::LongPackageNameToFilename (PackagePath,
283
297
FPackageName::GetMapPackageExtension ());
284
298
299
+ if (FPaths::FileExists (*PackageFileName))
300
+ {
301
+ // Will not save package if it already exists
302
+ return false ;
303
+ }
285
304
return UPackage::SavePackage (Package, World, EObjectFlags::RF_Public | EObjectFlags::RF_Standalone,
286
305
*PackageFileName, GError, nullptr , true , true , SAVE_NoError);
287
306
}
@@ -335,11 +354,21 @@ int32 UPrepareAssetsForCookingCommandlet::Main(const FString &Params)
335
354
DestroySpawnedActorsInWorld (SpawnedActors);
336
355
MapObjectLibrary->ClearLoaded ();
337
356
}
338
-
357
+ else
358
+ {
359
+ if (MapPathData.Len () >= 0 )
360
+ {
361
+ MapPathData.RemoveFromEnd (TEXT (" +" ));
362
+ }
363
+ }
339
364
// Save Map Path File for further use
340
- FString SaveDirectory = FPaths::ProjectContentDir () + PackageName + TEXT ( " /Config " ) ;
365
+ FString SaveDirectory = FPaths::ProjectContentDir ();
341
366
FString FileName = FString (" MapPaths.txt" );
342
367
SaveStringTextToFile (SaveDirectory, FileName, MapPathData, true );
368
+
369
+ FileName = FString (" PackagePath.txt" );
370
+ FString PackageJsonFilePath = GetFirstPackagePath (PackageName);
371
+ SaveStringTextToFile (SaveDirectory, FileName, PackageJsonFilePath, true );
343
372
return 0 ;
344
373
}
345
374
#endif
0 commit comments