Files
UnrealEngineUWP/Engine/Source/Editor/Cascade/Private/SCascadePreviewToolbar.cpp
Lauren Barnes 6248f8d412 Replacing legacy EditorStyle calls with AppStyle
#preflight 6272a74d2f6d177be3c6fdda
#rb Matt.Kuhlenschmidt

#ROBOMERGE-OWNER: Lauren.Barnes
#ROBOMERGE-AUTHOR: lauren.barnes
#ROBOMERGE-SOURCE: CL 20057269 via CL 20070159 via CL 20072035 via CL 20072203
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
#ROBOMERGE-CONFLICT from-shelf

[CL 20105363 by Lauren Barnes in ue5-main branch]
2022-05-09 13:12:28 -04:00

198 lines
6.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SCascadePreviewToolbar.h"
#include "Widgets/Layout/SBorder.h"
#include "Widgets/SBoxPanel.h"
#include "Framework/MultiBox/MultiBoxBuilder.h"
#include "Styling/AppStyle.h"
#include "SEditorViewportToolBarMenu.h"
#include "CascadeActions.h"
#include "Cascade.h"
#include "SCascadePreviewViewport.h"
#include "CascadePreviewViewportClient.h"
void SCascadePreviewViewportToolBar::Construct(const FArguments& InArgs)
{
CascadePtr = InArgs._CascadePtr;
this->ChildSlot
[
SNew(SBorder)
.BorderImage(FAppStyle::GetBrush("NoBorder"))
.ForegroundColor(FAppStyle::GetSlateColor("DefaultForeground"))
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
.Padding(5.0f, 2.0f)
[
SNew(SEditorViewportToolbarMenu)
.ParentToolBar(SharedThis(this))
.Cursor(EMouseCursor::Default)
.Label(NSLOCTEXT("Cascade", "ViewMenuTitle_Default", "View"))
.OnGetMenuContent(this, &SCascadePreviewViewportToolBar::GenerateViewMenu)
.AddMetaData<FTagMetaData>(TEXT("CascadeViewButton.View"))
]
+SHorizontalBox::Slot()
.AutoWidth()
.Padding(5.0f, 2.0f)
[
SNew(SEditorViewportToolbarMenu)
.ParentToolBar(SharedThis(this))
.Cursor(EMouseCursor::Default)
.Label(NSLOCTEXT("Cascade", "TimeMenuTitle_Default", "Time"))
.OnGetMenuContent(this, &SCascadePreviewViewportToolBar::GenerateTimeMenu)
.AddMetaData<FTagMetaData>(TEXT("CascadeViewButton.Time"))
]
]
];
SViewportToolBar::Construct(SViewportToolBar::FArguments());
}
TSharedRef<SWidget> SCascadePreviewViewportToolBar::GenerateViewMenu() const
{
const FCascadeCommands& Actions = FCascadeCommands::Get();
const bool bInShouldCloseWindowAfterMenuSelection = true;
FMenuBuilder ViewMenuBuilder(bInShouldCloseWindowAfterMenuSelection, CascadePtr.Pin()->GetToolkitCommands());
struct Local
{
static void BuildViewOptionsMenu(FMenuBuilder& Menu)
{
Menu.BeginSection("CascadeViewOverlays", NSLOCTEXT("Cascade", "ViewOptionsHeader", "View Overlays"));
{
Menu.AddMenuEntry(FCascadeCommands::Get().View_ParticleCounts);
Menu.AddMenuEntry(FCascadeCommands::Get().View_ParticleEventCounts);
Menu.AddMenuEntry(FCascadeCommands::Get().View_ParticleTimes);
Menu.AddMenuEntry(FCascadeCommands::Get().View_ParticleMemory);
Menu.AddMenuEntry(FCascadeCommands::Get().View_SystemCompleted);
Menu.AddMenuEntry(FCascadeCommands::Get().View_EmitterTickTimes);
}
Menu.EndSection();
}
static void BuildViewModesMenu(FMenuBuilder& Menu)
{
Menu.BeginSection("CascadeViewMode", NSLOCTEXT("Cascade", "ViewModeHeader", "View Mode"));
{
Menu.AddMenuEntry(FCascadeCommands::Get().ViewMode_Wireframe);
Menu.AddMenuEntry(FCascadeCommands::Get().ViewMode_Unlit);
Menu.AddMenuEntry(FCascadeCommands::Get().ViewMode_Lit);
Menu.AddMenuEntry(FCascadeCommands::Get().ViewMode_ShaderComplexity);
}
Menu.EndSection();
}
static void BuildDetailModesMenu(FMenuBuilder& Menu)
{
Menu.BeginSection("CascadeDetailMode", NSLOCTEXT("Cascade", "DetailModeHeader", "Detail Mode"));
{
Menu.AddMenuEntry(FCascadeCommands::Get().DetailMode_Low);
Menu.AddMenuEntry(FCascadeCommands::Get().DetailMode_Medium);
Menu.AddMenuEntry(FCascadeCommands::Get().DetailMode_High);
}
Menu.EndSection();
}
static void BuildSignificanceMenu(FMenuBuilder& Menu)
{
Menu.BeginSection("CascadeSignificance", NSLOCTEXT("Cascade", "SignificanceHeader", "Required Significance"));
{
Menu.AddMenuEntry(FCascadeCommands::Get().Significance_Critical);
Menu.AddMenuEntry(FCascadeCommands::Get().Significance_High);
Menu.AddMenuEntry(FCascadeCommands::Get().Significance_Medium);
Menu.AddMenuEntry(FCascadeCommands::Get().Significance_Low);
}
Menu.EndSection();
}
};
ViewMenuBuilder.AddSubMenu(NSLOCTEXT("Cascade", "ViewOptionsSubMenu", "View Overlays"),
FText::GetEmpty(),
FNewMenuDelegate::CreateStatic(&Local::BuildViewOptionsMenu));
ViewMenuBuilder.AddSubMenu(NSLOCTEXT("Cascade", "ViewModesSubMenu", "View Modes"),
FText::GetEmpty(),
FNewMenuDelegate::CreateStatic(&Local::BuildViewModesMenu));
ViewMenuBuilder.AddSubMenu(NSLOCTEXT("Cascade", "DetailModesSubMenu", "Detail Modes"),
FText::GetEmpty(),
FNewMenuDelegate::CreateStatic(&Local::BuildDetailModesMenu));
ViewMenuBuilder.AddSubMenu(NSLOCTEXT("Cascade", "SignificanceSubMenu", "Significance"),
FText::GetEmpty(),
FNewMenuDelegate::CreateStatic(&Local::BuildSignificanceMenu));
ViewMenuBuilder.BeginSection("CascadeMiscPreview");
{
// Only display the orbit mode option if orbit cam controls are disabled
if (!CascadePtr.Pin()->GetPreviewViewport()->GetViewportClient()->bUsingOrbitCamera )
{
ViewMenuBuilder.AddMenuEntry(Actions.ToggleOrbitMode);
}
ViewMenuBuilder.AddMenuEntry(Actions.ToggleLocalVectorFields);
ViewMenuBuilder.AddMenuEntry(Actions.ToggleGrid);
ViewMenuBuilder.AddMenuEntry(Actions.ToggleWireframeSphere);
ViewMenuBuilder.AddMenuEntry(Actions.TogglePostProcess);
ViewMenuBuilder.AddMenuEntry(Actions.ToggleMotion);
ViewMenuBuilder.AddMenuEntry(Actions.SetMotionRadius);
}
ViewMenuBuilder.EndSection();
ViewMenuBuilder.BeginSection("CascadeMiscPreview2");
{
ViewMenuBuilder.AddMenuEntry(Actions.ToggleGeometry);
ViewMenuBuilder.AddMenuEntry(Actions.ToggleGeometry_Properties);
}
ViewMenuBuilder.EndSection();
return ViewMenuBuilder.MakeWidget();
}
TSharedRef<SWidget> SCascadePreviewViewportToolBar::GenerateTimeMenu() const
{
const FCascadeCommands& Actions = FCascadeCommands::Get();
const bool bInShouldCloseWindowAfterMenuSelection = true;
FMenuBuilder TimeMenuBuilder(bInShouldCloseWindowAfterMenuSelection, CascadePtr.Pin()->GetToolkitCommands());
struct Local
{
static void BuildAnimSpeedOptionsMenu(FMenuBuilder& Menu)
{
Menu.BeginSection("CascadeAnimSpeed", NSLOCTEXT("Cascade", "AnimSpeedHeader", "AnimSpeed"));
{
Menu.AddMenuEntry(FCascadeCommands::Get().AnimSpeed_100);
Menu.AddMenuEntry(FCascadeCommands::Get().AnimSpeed_50);
Menu.AddMenuEntry(FCascadeCommands::Get().AnimSpeed_25);
Menu.AddMenuEntry(FCascadeCommands::Get().AnimSpeed_10);
Menu.AddMenuEntry(FCascadeCommands::Get().AnimSpeed_1);
}
Menu.EndSection();
}
};
TimeMenuBuilder.BeginSection("CascadeTimeMenu");
{
TimeMenuBuilder.AddMenuEntry(FCascadeCommands::Get().CascadePlay);
}
TimeMenuBuilder.EndSection();
TimeMenuBuilder.BeginSection("CascadeTimeMenu2");
{
TimeMenuBuilder.AddMenuEntry(FCascadeCommands::Get().ToggleRealtime);
TimeMenuBuilder.AddMenuEntry(FCascadeCommands::Get().ToggleLoopSystem);
}
TimeMenuBuilder.EndSection();
TimeMenuBuilder.AddSubMenu(NSLOCTEXT("Cascade", "AnimSpeedSubMenu", "AnimSpeed"),
FText::GetEmpty(),
FNewMenuDelegate::CreateStatic(&Local::BuildAnimSpeedOptionsMenu));
return TimeMenuBuilder.MakeWidget();
}