You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
98 lines
2.5 KiB
C++
98 lines
2.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "ContentBrowserMenuContexts.h"
|
|
|
|
#include "Containers/UnrealString.h"
|
|
#include "ContentBrowserDataSubsystem.h"
|
|
#include "SContentBrowser.h"
|
|
#include "UObject/UnrealNames.h"
|
|
#include "ToolMenus.h"
|
|
#include "Algo/Copy.h"
|
|
#include "AssetViewUtils.h"
|
|
|
|
FName UContentBrowserToolbarMenuContext::GetCurrentPath() const
|
|
{
|
|
if (TSharedPtr<SContentBrowser> Browser = ContentBrowser.Pin())
|
|
{
|
|
return *Browser->GetCurrentPath(EContentBrowserPathType::Virtual);
|
|
}
|
|
|
|
return NAME_None;
|
|
}
|
|
|
|
bool UContentBrowserToolbarMenuContext::CanWriteToCurrentPath() const
|
|
{
|
|
if (TSharedPtr<SContentBrowser> Browser = ContentBrowser.Pin())
|
|
{
|
|
return Browser->CanWriteToCurrentPath();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
TArray<UObject*> UContentBrowserAssetContextMenuContext::LoadSelectedObjectsIfNeeded() const
|
|
{
|
|
TArray<FString> SelectedAssetPaths;
|
|
for (const FAssetData& SelectedAsset : SelectedAssets)
|
|
{
|
|
SelectedAssetPaths.Add(SelectedAsset.GetObjectPathString());
|
|
}
|
|
|
|
TArray<UObject*> Objects;
|
|
AssetViewUtils::LoadAssetsIfNeeded(SelectedAssetPaths, Objects);
|
|
|
|
return Objects;
|
|
}
|
|
|
|
TArray<FAssetData> UContentBrowserAssetContextMenuContext::GetSelectedAssetsOfType(const UClass* AssetClass, EIncludeSubclasses IncludeSubclasses) const
|
|
{
|
|
TArray<FAssetData> TypedSelectedAssets;
|
|
if (IncludeSubclasses == EIncludeSubclasses::Yes)
|
|
{
|
|
Algo::CopyIf(SelectedAssets, TypedSelectedAssets, [AssetClass](const FAssetData& AssetData) { return AssetData.IsInstanceOf(AssetClass); });
|
|
}
|
|
else
|
|
{
|
|
Algo::CopyIf(SelectedAssets, TypedSelectedAssets, [AssetClass](const FAssetData& AssetData) { return AssetData.GetClass() == AssetClass; });
|
|
}
|
|
|
|
return TypedSelectedAssets;
|
|
}
|
|
|
|
const FAssetData* UContentBrowserAssetContextMenuContext::GetSingleSelectedAssetOfType(const UClass* AssetClass, EIncludeSubclasses IncludeSubclasses) const
|
|
{
|
|
if (SelectedAssets.Num() == 1)
|
|
{
|
|
if (IncludeSubclasses == EIncludeSubclasses::Yes)
|
|
{
|
|
if (SelectedAssets[0].IsInstanceOf(AssetClass))
|
|
{
|
|
return &SelectedAssets[0];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (SelectedAssets[0].GetClass() == AssetClass)
|
|
{
|
|
return &SelectedAssets[0];
|
|
}
|
|
}
|
|
}
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
namespace UE::ContentBrowser
|
|
{
|
|
UToolMenu* ExtendToolMenu_AssetContextMenu(UClass* AssetClass)
|
|
{
|
|
check(AssetClass);
|
|
|
|
FNameBuilder Builder;
|
|
Builder << TEXT("ContentBrowser.AssetContextMenu.");
|
|
AssetClass->GetFName().AppendString(Builder);
|
|
const FName MenuName(Builder.ToView());
|
|
|
|
return UToolMenus::Get()->ExtendMenu(MenuName);
|
|
}
|
|
} |