// Voir LPAssetListUtils.h #include "LPAssetListUtils.h" #include "AssetRegistry/AssetRegistryModule.h" #include "Misc/FileHelper.h" #include "Misc/Paths.h" TArray LPAssetList::Resolve(const TMap& ParamsMap) { TSet Out; const FString ListFile = ParamsMap.FindRef(TEXT("List")); if (!ListFile.IsEmpty()) { TArray Lines; FFileHelper::LoadFileToStringArray(Lines, *ListFile); for (FString Line : Lines) { Line.TrimStartAndEndInline(); if (Line.IsEmpty()) { continue; } if (Line.StartsWith(TEXT("/"))) { Out.Add(Line); continue; } // Content\X\Y.uasset -> /Game/X/Y FString Rel = Line.Replace(TEXT("\\"), TEXT("/")); if (Rel.StartsWith(TEXT("Content/"))) { Rel = Rel.Mid(8); } Out.Add(TEXT("/Game/") + FPaths::GetBaseFilename(Rel, false)); } } const FString Dirs = ParamsMap.FindRef(TEXT("Dirs")); if (!Dirs.IsEmpty()) { IAssetRegistry& Registry = FModuleManager::LoadModuleChecked(TEXT("AssetRegistry")).Get(); Registry.SearchAllAssets(true); TArray DirList; Dirs.ParseIntoArray(DirList, TEXT(",")); for (const FString& Dir : DirList) { TArray Assets; Registry.GetAssetsByPath(FName(*Dir), Assets, true); for (const FAssetData& A : Assets) { Out.Add(A.PackageName.ToString()); } } } TArray Sorted = Out.Array(); Sorted.Sort(); return Sorted; }