Files
UnrealEngineUWP/Engine/Source/Editor/LevelEditor/Public/LevelEditorMenuContext.h
zach rammell 4702b1a507 Add cursor world location to level editor tool menu context
#jira UE-96331
#rb brooke.hubert jamie.dale
#preflight 60ca2609be81e800015eae93

[CL 16692741 by zach rammell in ue5-main branch]
2021-06-16 14:16:49 -04:00

86 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "Elements/Framework/TypedElementHandle.h"
#include "LevelEditorMenuContext.generated.h"
class SLevelEditor;
class UActorComponent;
class SLevelViewport;
class SLevelViewportToolBar;
class FLevelEditorViewportClient;
class UTypedElementSelectionSet;
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 */
Viewport,
/** This context menu is applicable to the Scene Outliner (disables click-position-based menu items) */
SceneOutliner,
};
UCLASS()
class LEVELEDITOR_API ULevelEditorContextMenuContext : public UObject
{
GENERATED_BODY()
public:
TWeakPtr<SLevelEditor> 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. */
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
FTypedElementHandle HitProxyElement;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="LevelEditor|Menu")
FVector CursorWorldLocation;
UPROPERTY()
TArray<TObjectPtr<UActorComponent>> SelectedComponents;
/** If the ContextType is Viewport this property can be set to the HitProxy actor that triggered the ContextMenu. */
UPROPERTY()
TObjectPtr<AActor> HitProxyActor = nullptr;
};
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(Transient)
TObjectPtr<const UTypedElementSelectionSet> CurrentSelection;
};