Files
UnrealEngineUWP/Engine/Source/Editor/Persona/Private/PersonaAssetFamilyManager.cpp
Matt Peters 7ad238a806 AssetRegistry includes (Engine/Source): change #include "AssetData.h" -> #include "AssetRegistry/AssetData.h", and similar for the other moved AssetRegistry headers.
#rb Zousar.Shaker
#rnx
#preflight 6270509a220f89f0ad573030

[CL 20016982 by Matt Peters in ue5-main branch]
2022-05-02 18:06:48 -04:00

34 lines
1018 B
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "PersonaAssetFamilyManager.h"
#include "AssetRegistry/AssetData.h"
#include "IAssetFamily.h"
#include "PersonaAssetFamily.h"
FPersonaAssetFamilyManager& FPersonaAssetFamilyManager::Get()
{
static FPersonaAssetFamilyManager TheManager;
return TheManager;
}
TSharedRef<IAssetFamily> FPersonaAssetFamilyManager::CreatePersonaAssetFamily(const UObject* InAsset)
{
// compact any invalid entries
AssetFamilies.RemoveAll([](const TWeakPtr<class IAssetFamily>& InAssetFamily) { return !InAssetFamily.IsValid(); });
// look for an existing matching asset family
FAssetData AssetData(InAsset);
for (TWeakPtr<class IAssetFamily>& AssetFamily : AssetFamilies)
{
if (AssetFamily.Pin()->IsAssetCompatible(AssetData))
{
return AssetFamily.Pin().ToSharedRef();
}
}
// not found - make a new one
TSharedRef<IAssetFamily> NewAssetFamily = MakeShareable(new FPersonaAssetFamily(InAsset));
AssetFamilies.Add(NewAssetFamily);
return NewAssetFamily;
}