Files
UnrealEngineUWP/Engine/Source/Editor/CommonMenuExtensions/Public/StrataVisualizationMenuCommands.h
Charles deRousiers 2190bdd38e Add Strata debug mode into the level view menu.
This gives direct access to all Strata view mode, which helps with discoverability.

All strata view mode are also available with CVar: r.Strata.ViewMode

#rb none
#jira none
#preflight 635a22c68d56375d45d65e15
#fyi sebastien.hillaire

[CL 22806075 by Charles deRousiers in ue5-main branch]
2022-10-27 02:52:45 -04:00

62 lines
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Map.h"
#include "Framework/Commands/Commands.h"
#include "Framework/Commands/UICommandInfo.h"
#include "Framework/MultiBox/MultiBoxBuilder.h"
#include "HAL/Platform.h"
#include "Templates/SharedPointer.h"
#include "UObject/NameTypes.h"
class FEditorViewportClient;
class FMenuBuilder;
class FUICommandInfo;
class FUICommandList;
class COMMONMENUEXTENSIONS_API FStrataVisualizationMenuCommands : public TCommands<FStrataVisualizationMenuCommands>
{
public:
enum class FStrataVisualizationType : uint8
{
MaterialProperties,
MaterialCount,
AdvancedMaterialProperties,
};
struct FStrataVisualizationRecord
{
FName Name;
TSharedPtr<FUICommandInfo> Command;
FStrataVisualizationType Type = FStrataVisualizationType::MaterialProperties;
};
typedef TMultiMap<FName, FStrataVisualizationRecord> TStrataVisualizationModeCommandMap;
typedef TStrataVisualizationModeCommandMap::TConstIterator TCommandConstIterator;
FStrataVisualizationMenuCommands();
TCommandConstIterator CreateCommandConstIterator() const;
static void BuildVisualisationSubMenu(FMenuBuilder& Menu);
virtual void RegisterCommands() override;
void BindCommands(FUICommandList& CommandList, const TSharedPtr<FEditorViewportClient>& Client) const;
inline bool IsPopulated() const
{
return CommandMap.Num() > 0;
}
private:
void BuildCommandMap();
bool AddCommandTypeToMenu(FMenuBuilder& Menu, const FStrataVisualizationType Type) const;
static void ChangeStrataVisualizationMode(const TSharedPtr<FEditorViewportClient>& Client, FName InName);
static bool IsStrataVisualizationModeSelected(const TSharedPtr<FEditorViewportClient>& Client, FName InName);
private:
TStrataVisualizationModeCommandMap CommandMap;
};