// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Map.h" #include "UObject/NameTypes.h" #include "Templates/SharedPointer.h" #include "Framework/Commands/UICommandInfo.h" #include "Framework/MultiBox/MultiBoxBuilder.h" #include "Framework/Commands/Commands.h" class FEditorViewportClient; class UNREALED_API FRayTracingDebugVisualizationMenuCommands: public TCommands { public: struct FRayTracingDebugVisualizationRecord { uint32 Index; FName Name; TSharedPtr Command; FRayTracingDebugVisualizationRecord() : Index(0), Name(), Command() { } }; FRayTracingDebugVisualizationMenuCommands(); static void BuildVisualisationSubMenu(FMenuBuilder& Menu); virtual void RegisterCommands() override; void BindCommands(FUICommandList& CommandList, const TSharedPtr& Client) const; static bool DebugModeShouldBeTonemapped(const FName& RayTracingDebugModeName); private: void BuildCommandMap(); void CreateRayTracingDebugVisualizationCommands(); void AddRayTracingDebugVisualizationCommandsToMenu(FMenuBuilder& menu) const; static void ChangeRayTracingDebugVisualizationMode(const TSharedPtr& Client, FName InName); static bool IsRayTracingDebugVisualizationModeSelected(const TSharedPtr& Client, FName InName); TArray RayTracingDebugVisualizationCommands; static TArray RayTracingDebugModeNames; };