In use by any level content browser filter now checks more than one layer deep.

#rb none
#jira UE-78065

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: rex.hill
#ROBOMERGE-SOURCE: CL 7660692 via CL 7665277 via CL 7665519
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v388-7785529)

[CL 7795650 by rex hill in Dev-Build branch]
This commit is contained in:
rex hill
2019-08-06 11:32:54 -04:00
parent 427b9e16c7
commit fccf550d06

View File

@@ -33,17 +33,31 @@ namespace FrontendFilterHelper
*/
void GetDependencies(const FARFilter& InAssetRegistryFilter, const IAssetRegistry& AssetRegistry, TSet<FName>& OutDependencySet)
{
TArray<FAssetData> FoundAssets;
AssetRegistry.GetAssets(InAssetRegistryFilter, FoundAssets);
for (const FAssetData& AssetData : FoundAssets)
TArray<FName> PackageNamesToProcess;
{
// Store all the dependencies of all the levels
TArray<FAssetIdentifier> AssetDependencies;
AssetRegistry.GetDependencies(FAssetIdentifier(AssetData.PackageName), AssetDependencies);
TArray<FAssetData> FoundAssets;
AssetRegistry.GetAssets(InAssetRegistryFilter, FoundAssets);
for (const FAssetData& AssetData : FoundAssets)
{
PackageNamesToProcess.Add(AssetData.PackageName);
OutDependencySet.Add(AssetData.PackageName);
}
}
TArray<FAssetIdentifier> AssetDependencies;
while (PackageNamesToProcess.Num() > 0)
{
const FName PackageName = PackageNamesToProcess.Pop(false);
AssetDependencies.Reset();
AssetRegistry.GetDependencies(FAssetIdentifier(PackageName), AssetDependencies);
for (const FAssetIdentifier& Dependency : AssetDependencies)
{
OutDependencySet.Add(Dependency.PackageName);
bool bIsAlreadyInSet = false;
OutDependencySet.Add(Dependency.PackageName, &bIsAlreadyInSet);
if (bIsAlreadyInSet == false)
{
PackageNamesToProcess.Add(Dependency.PackageName);
}
}
}
}