TSharedRef<SWidget> GenerateViewMenu() const
	{
		TSharedPtr<const FUICommandList> CommandList = EditorViewport.IsValid() ? EditorViewport.Pin()->GetCommandList() : nullptr;

		const bool bInShouldCloseWindowAfterMenuSelection = true;
		FMenuBuilder ViewMenuBuilder(bInShouldCloseWindowAfterMenuSelection, CommandList);

		ViewMenuBuilder.AddMenuEntry(FEditorViewportCommands::Get().LitMode, NAME_None, NSLOCTEXT("BlueprintEditor", "LitModeMenuOption", "Lit"));
		ViewMenuBuilder.AddMenuEntry(FEditorViewportCommands::Get().UnlitMode, NAME_None, NSLOCTEXT("BlueprintEditor", "UnlitModeMenuOption", "Unlit"));
		ViewMenuBuilder.AddMenuEntry(FEditorViewportCommands::Get().WireframeMode, NAME_None, NSLOCTEXT("BlueprintEditor", "WireframeModeMenuOption", "Wireframe"));

		return ViewMenuBuilder.MakeWidget();
	}
TSharedRef<SWidget> SPhATPreviewViewportToolBar::GenerateViewMenu() const
{
	const FPhATCommands& Actions = FPhATCommands::Get();
		
	const bool bInShouldCloseWindowAfterMenuSelection = true;
	FMenuBuilder ViewMenuBuilder(bInShouldCloseWindowAfterMenuSelection, PhATPtr.Pin()->GetToolkitCommands());
	{
		ViewMenuBuilder.AddMenuEntry(Actions.ShowSkeleton);
		ViewMenuBuilder.AddMenuEntry(Actions.DrawGroundBox);
		ViewMenuBuilder.AddMenuEntry(Actions.InstanceProperties);
		ViewMenuBuilder.AddMenuEntry(Actions.ShowFixedBodies);
		ViewMenuBuilder.AddMenuEntry(Actions.ToggleGraphicsHierarchy);
		ViewMenuBuilder.AddMenuEntry(Actions.ToggleBoneInfuences);
		ViewMenuBuilder.AddMenuEntry(Actions.ToggleMassProperties);
	}

	return ViewMenuBuilder.MakeWidget();	
}
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.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();	
}