// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MuCO/CustomizableObjectCompilerTypes.h" #include "Widgets/SCompoundWidget.h" #include "Widgets/Input/SNumericDropDown.h" class STableViewBase; namespace ESelectInfo { enum Type : int; } template class STreeView; // Forward declarations class UCustomizableObject; class FMutableObjectTreeElement; class FReferenceCollector; class FTabManager; class ITableRow; class STextComboBox; class SWidget; /** This widget shows the internals of a CustomizableObject for debugging purposes. * This is not the Unreal source graph in the UCustomizableObject, but an intermediate step of the compilation process. */ class SMutableObjectViewer : public SCompoundWidget, public FGCObject { public: // SWidget interface SLATE_BEGIN_ARGS(SMutableObjectViewer) {} SLATE_END_ARGS() void Construct(const FArguments& InArgs, UCustomizableObject*); // FGCObject interface virtual void AddReferencedObjects(FReferenceCollector& Collector) override; virtual FString GetReferencerName() const override; private: /** Slate whose content space contains the currently open debugging view */ TSharedPtr DebuggerContentsBox; /** The Mutable Graph to show, represented by its root. */ TObjectPtr CustomizableObject; /** Compilation options to use in the debugger operations. */ FCompilationOptions CompileOptions; TArray< TSharedPtr > DebugPlatformStrings; TSharedPtr DebugPlatformCombo; /** UI callbacks */ void GenerateMutableGraphPressed(); void CompileMutableCodePressed(); TSharedRef GenerateCompileOptionsMenuContent(); TSharedPtr CompileOptimizationCombo; TArray< TSharedPtr > CompileOptimizationStrings; TSharedPtr CompileTextureCompressionCombo; TArray< TSharedPtr > CompileTextureCompressionStrings; TSharedPtr> CompileTilingCombo; void OnChangeCompileOptimizationLevel(TSharedPtr NewSelection, ESelectInfo::Type SelectInfo); void OnChangeCompileTextureCompressionType(TSharedPtr NewSelection, ESelectInfo::Type); void OnChangeDebugPlatform(TSharedPtr NewSelection, ESelectInfo::Type SelectInfo); };