// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Widgets/SWidget.h" #include "EditorViewportLayout.h" #include "Widgets/Layout/SSplitter.h" #include "AssetEditorViewportLayout.h" class FEditorViewportLayoutThreePanes: public FAssetEditorViewportLayout { protected: /** * Creates the viewports and splitter for the two panes vertical layout */ virtual TSharedRef MakeViewportLayout(TFunction(void)>& Func, const FString& LayoutString) override; virtual TSharedRef MakeThreePanelWidget( TMap>& ViewportWidgets, const TSharedRef& ViewportKey0, const TSharedRef& ViewportKey1, const TSharedRef& ViewportKey2, float PrimarySplitterPercentage, float SecondarySplitterPercentage) = 0; protected: /** The splitter widgets */ TSharedPtr PrimarySplitterWidget; TSharedPtr SecondarySplitterWidget; }; // FEditorViewportLayoutThreePanesLeft ///////////////////////////// class FEditorViewportLayoutThreePanesLeft: public FEditorViewportLayoutThreePanes { public: virtual const FName& GetLayoutTypeName() const override { return EditorViewportConfigurationNames::ThreePanesLeft; } virtual TSharedRef MakeThreePanelWidget( TMap>& ViewportWidgets, const TSharedRef& ViewportKey0, const TSharedRef& ViewportKey1, const TSharedRef& ViewportKey2, float PrimarySplitterPercentage, float SecondarySplitterPercentage) override; }; // FEditorViewportLayoutThreePanesRight ///////////////////////////// class FEditorViewportLayoutThreePanesRight: public FEditorViewportLayoutThreePanes { public: virtual const FName& GetLayoutTypeName() const override { return EditorViewportConfigurationNames::ThreePanesRight; } virtual TSharedRef MakeThreePanelWidget( TMap>& ViewportWidgets, const TSharedRef& ViewportKey0, const TSharedRef& ViewportKey1, const TSharedRef& ViewportKey2, float PrimarySplitterPercentage, float SecondarySplitterPercentage) override; }; // FEditorViewportLayoutThreePanesTop ///////////////////////////// class FEditorViewportLayoutThreePanesTop: public FEditorViewportLayoutThreePanes { public: virtual const FName& GetLayoutTypeName() const override { return EditorViewportConfigurationNames::ThreePanesTop; } virtual TSharedRef MakeThreePanelWidget( TMap>& ViewportWidgets, const TSharedRef& ViewportKey0, const TSharedRef& ViewportKey1, const TSharedRef& ViewportKey2, float PrimarySplitterPercentage, float SecondarySplitterPercentage) override; }; // FEditorViewportLayoutThreePanesBottom ///////////////////////////// class FEditorViewportLayoutThreePanesBottom: public FEditorViewportLayoutThreePanes { public: virtual const FName& GetLayoutTypeName() const override { return EditorViewportConfigurationNames::ThreePanesBottom; } virtual TSharedRef MakeThreePanelWidget( TMap>& ViewportWidgets, const TSharedRef& ViewportKey0, const TSharedRef& ViewportKey1, const TSharedRef& ViewportKey2, float PrimarySplitterPercentage, float SecondarySplitterPercentage) override; };