Files
UnrealEngineUWP/Engine/Source/Editor/LevelEditor/Public/LevelEditorMenuContext.h
bryan sefcik 98b51354ed Ran IWYU on Public headers under Engine/Source/Editor/...
Headers are updated to contain any missing #includes needed to compile and #includes are sorted.  Nothing is removed.

#ushell-cherrypick of 21065253 by bryan.sefcik
#jira
#preflight 62d5b3e91062f2e63014598e

#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21152630 via CL 21156388 via CL 21157044
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21181817 by bryan sefcik in ue5-main branch]
2022-07-20 11:56:29 -04:00

101 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Array.h"
#include "CoreMinimal.h"
#include "Elements/Framework/TypedElementHandle.h"
#include "Math/UnrealMathSSE.h"
#include "Math/Vector.h"
#include "Templates/SharedPointer.h"
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "UObject/ObjectPtr.h"
#include "UObject/UObjectGlobals.h"
#include "UObject/WeakObjectPtr.h"
#include "UObject/WeakObjectPtrTemplates.h"
#include "LevelEditorMenuContext.generated.h"
class AActor;
class FLevelEditorViewportClient;
class ILevelEditor;
class SLevelEditor;
class SLevelViewport;
class SLevelViewportToolBar;
class UActorComponent;
class UTypedElementSelectionSet;
struct FFrame;
UCLASS()
class LEVELEDITOR_API ULevelEditorMenuContext : public UObject
{
GENERATED_BODY()
public:
TWeakPtr<SLevelEditor> LevelEditor;
};
/** Enum to describe what a level editor context menu should be built for */
UENUM()
enum class ELevelEditorMenuContext : uint8
{
/** This context menu is applicable to a viewport (limited subset of entries) */
Viewport,
/** This context menu is applicable to the Scene Outliner (disables click-position-based menu items) */
SceneOutliner,
/** This is the replica of the context menu that appears in the main menu bar (lists all entries) */
MainMenu,
};
UCLASS()
class LEVELEDITOR_API ULevelEditorContextMenuContext : public UObject
{
GENERATED_BODY()
public:
TWeakPtr<ILevelEditor> LevelEditor;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
ELevelEditorMenuContext ContextType;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
TObjectPtr<const UTypedElementSelectionSet> CurrentSelection;
/** If the ContextType is Viewport this property can be set to the HitProxy element that triggered the ContextMenu. */
FTypedElementHandle HitProxyElement;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
FVector CursorWorldLocation;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
TArray<TObjectPtr<UActorComponent>> SelectedComponents;
/** If the ContextType is Viewport this property can be set to the HitProxy actor that triggered the ContextMenu. */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
TWeakObjectPtr<AActor> HitProxyActor = nullptr;
UFUNCTION(BlueprintCallable, Category = "LevelEditor | Menu", DisplayName="Get Hit Proxy Element", meta=(ScriptName="GetHitProxyElement"))
FScriptTypedElementHandle GetScriptHitProxyElement();
};
UCLASS()
class LEVELEDITOR_API ULevelViewportToolBarContext : public UObject
{
GENERATED_BODY()
public:
TWeakPtr<SLevelViewportToolBar> LevelViewportToolBarWidget;
TWeakPtr<const SLevelViewportToolBar> LevelViewportToolBarWidgetConst;
FLevelEditorViewportClient* GetLevelViewportClient();
};
UCLASS()
class LEVELEDITOR_API UQuickActionMenuContext : public UObject
{
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
TObjectPtr<const UTypedElementSelectionSet> CurrentSelection;
};