ExtPackageUtils.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright 2017-2021 marynate. All Rights Reserved.
  2. #pragma once
  3. #include "ExtAssetData.h"
  4. #include "UObject/ObjectMacros.h"
  5. #include "Misc/ObjectThumbnail.h"
  6. struct FExtAssetData;
  7. /**
  8. * Helper functions to deal with packages and directories
  9. */
  10. struct FExtPackageUtils
  11. {
  12. public:
  13. /** Parse and gather external asset data */
  14. static bool ParsePackageWithPackageReader(FExtAssetData& OutExtAssetData);
  15. /** Load thumbnail from external asset */
  16. static bool LoadThumbnailWithPackageReader(const FExtAssetData& InExtAssetData, FObjectThumbnail& InOutThumbnail);
  17. #if ECB_LEGACY
  18. /** Parse and gather external asset data */
  19. static bool ParsePackage(FExtAssetData& OutExtAssetData);
  20. /** Load thumbnail from external asset */
  21. static bool LoadThumbnail(const FExtAssetData& InExtAssetData, FObjectThumbnail& OutThumbnail);
  22. /** Load soft references */
  23. static void LoadSoftReferences(const FExtAssetData& InExtAssetData, TArray<FName>& OutSoftPackageReferenceList);
  24. #endif
  25. /** Unload package by file path */
  26. static void UnloadPackage(const TArray<FString>& InFilePaths, TArray<UPackage*>* OutUnloadPackage = nullptr);
  27. /** Get all child directories of input base directory */
  28. static void GetDirectories(const FString& InBaseDirectory, TArray<FString>& OutPathList);
  29. /** Get all child directories of input base directory */
  30. static void GetDirectoriesRecursively(const FString& InBaseDirectory, TArray<FString>& OutPathList);
  31. /** Get all packages' full file path in input root directory, recursively if asked */
  32. static void GetAllPackages(const FString& InRootDirectory, TArray<FString>& OutPathList, bool bResursively);
  33. /** Get all packages' full file path in input root directory, recursively if asked */
  34. static void GetAllPackages(const FName& InRootDirectory, TArray<FName>& OutPathList);
  35. /** Check if input directory contains any valid package */
  36. static bool HasPackages(const FString& InDirectory, bool bResursively);
  37. /** Check if a package exist */
  38. static bool DoesPackageExist(const FString PackageName);
  39. private:
  40. /** Writes information about the linker to the log. */
  41. static void GeneratePackageReport(class FLinkerLoad* InLinker, uint32 InInfoFlags, bool bInHideOffsets);
  42. #if ECB_LEGACY
  43. /** Loads thumbnails from the specified package file name */
  44. static bool LoadThumbnailsFromPackage(const FString& InPackageFileName, const TSet< FName >& InObjectFullNames, FThumbnailMap& InOutThumbnails);
  45. /** Loads thumbnails from a package unless they're already cached in that package's thumbnail map */
  46. static bool ConditionallyLoadThumbnailsFromPackage(const FString& InPackageFileName, const TSet< FName >& InObjectFullNames, FThumbnailMap& InOutThumbnails);
  47. #endif
  48. };