Files
UnrealEngineUWP/Engine/Source/Editor/Persona/Private/PersonaAssetFamilyManager.cpp
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

34 lines
1014 B
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#include "PersonaAssetFamilyManager.h"
#include "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;
}