Files
UnrealEngine/Engine/Source/Editor/ContentBrowser/Private/AssetViewContentSources.cpp
2025-05-18 13:04:45 +08:00

93 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AssetViewContentSources.h"
#include "ICollectionContainer.h"
FAssetViewContentSources::FAssetViewContentSources(FName InVirtualPath)
: VirtualPaths({ InVirtualPath })
{
}
FAssetViewContentSources::FAssetViewContentSources(TArray<FName> InVirtualPaths)
: VirtualPaths(MoveTemp(InVirtualPaths))
{
}
FAssetViewContentSources::FAssetViewContentSources(FCollectionRef InCollection)
: Collections({ InCollection })
{
SanitizeCollections();
}
FAssetViewContentSources::FAssetViewContentSources(TArray<FCollectionRef> InCollections)
: Collections(MoveTemp(InCollections))
{
SanitizeCollections();
}
FAssetViewContentSources::FAssetViewContentSources(TArray<FName> InVirtualPaths, TArray<FCollectionRef> InCollections)
: VirtualPaths(MoveTemp(InVirtualPaths))
, Collections(MoveTemp(InCollections))
{
// Only one of VirtualPaths or Collections should be set.
check(VirtualPaths.IsEmpty() || Collections.IsEmpty());
SanitizeCollections();
}
void FAssetViewContentSources::SetVirtualPath(FName InVirtualPath)
{
Reset();
VirtualPaths.Add(InVirtualPath);
}
void FAssetViewContentSources::SetVirtualPaths(const TArray<FName>& InVirtualPaths)
{
VirtualPaths = InVirtualPaths;
Collections.Reset();
}
void FAssetViewContentSources::SetCollection(const FCollectionRef& InCollection)
{
Reset();
Collections.Add(InCollection);
SanitizeCollections();
}
void FAssetViewContentSources::SetCollections(const TArray<FCollectionRef>& InCollections)
{
VirtualPaths.Reset();
Collections = InCollections;
SanitizeCollections();
}
bool FAssetViewContentSources::IsDynamicCollection() const
{
if (Collections.Num() == 1)
{
const FCollectionRef& Collection = Collections[0];
ECollectionStorageMode::Type StorageMode = ECollectionStorageMode::Static;
return (Collection.Container->GetCollectionStorageMode(Collection.Name, Collection.Type, StorageMode) && StorageMode == ECollectionStorageMode::Dynamic);
}
return false;
}
void FAssetViewContentSources::Reset()
{
VirtualPaths.Reset();
Collections.Reset();
}
void FAssetViewContentSources::SanitizeCollections()
{
verify(Collections.RemoveAll([](const FCollectionRef& Collection) { return !Collection.Container.IsValid(); }) == 0);
}