Files
UnrealEngine/Engine/Source/Editor/VREditor/Public/UI/VRRadialMenuHandler.h
2025-05-18 13:04:45 +08:00

85 lines
2.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "SlateFwd.h"
#include "UObject/ObjectMacros.h"
#include "UObject/Object.h"
#include "Framework/MultiBox/MultiBoxBuilder.h"
#include "VRRadialMenuHandler.generated.h"
class FUICommandList;
class UVREditorMode;
DECLARE_DELEGATE_FourParams(FOnRadialMenuGenerated, FMenuBuilder&, TSharedPtr<FUICommandList>, UVREditorMode*, float&);
/**
* VR Editor user interface manager
*/
UCLASS()
class UVRRadialMenuHandler: public UObject
{
GENERATED_BODY()
public:
/** Default constructor */
UVRRadialMenuHandler();
/** Builds the current radial menu */
void BuildRadialMenuCommands(FMenuBuilder& MenuBuilder, TSharedPtr<FUICommandList> CommandList, UVREditorMode* VRMode, float& RadiusOverride);
/** Registers a new menu generator and replaces the currently displayed menu if the radial menu is open */
void RegisterMenuGenerator(const FOnRadialMenuGenerated NewMenuGenerator, const bool bShouldAddToStack = true);
FOnRadialMenuGenerated GetCurrentMenuGenerator()
{
return OnRadialMenuGenerated;
};
FOnRadialMenuGenerated GetHomeMenuGenerator()
{
return HomeMenu;
};
/** Returns to the previous radial menu */
void BackOutMenu();
/** Returns to the home menu */
void Home();
void Init(class UVREditorUISystem* InUISystem);
protected:
/** Functions to bind to each menu delegate */
void HomeMenuGenerator(FMenuBuilder& MenuBuilder, TSharedPtr<FUICommandList> CommandList, UVREditorMode* VRMode, float& RadiusOverride);
void SnapMenuGenerator(FMenuBuilder& MenuBuilder, TSharedPtr<FUICommandList> CommandList, UVREditorMode* VRMode, float& RadiusOverride);
void GizmoMenuGenerator(FMenuBuilder& MenuBuilder, TSharedPtr<FUICommandList> CommandList, UVREditorMode* VRMode, float& RadiusOverride);
void EditMenuGenerator(FMenuBuilder& MenuBuilder, TSharedPtr<FUICommandList> CommandList, UVREditorMode* VRMode, float& RadiusOverride);
void SystemMenuGenerator(FMenuBuilder& MenuBuilder, TSharedPtr<FUICommandList> CommandList, UVREditorMode* VRMode, float& RadiusOverride);
protected:
FOnRadialMenuGenerated OnRadialMenuGenerated;
FOnRadialMenuGenerated HomeMenu;
FOnRadialMenuGenerated SnapMenu;
FOnRadialMenuGenerated GizmoMenu;
FOnRadialMenuGenerated EditMenu;
FOnRadialMenuGenerated SystemMenu;
static FText ActionMenuLabel;
class UVREditorUISystem* UIOwner;
TArray<FOnRadialMenuGenerated> MenuStack;
};