// Copyright Epic Games, Inc. All Rights Reserved. #include "MaterialEditorModes.h" #include "Settings/EditorExperimentalSettings.h" #include "ToolMenus.h" #include "EdGraph/EdGraph.h" #include "EdGraph/EdGraphSchema.h" #include "Framework/Docking/LayoutExtender.h" #include "MaterialStats.h" #include "MaterialEditor.h" #include "MaterialEditorTabs.h" #include "Tabs/MaterialEditorTabFactories.h" #define LOCTEXT_NAMESPACE "MaterialEditor" const FName FMaterialEditorApplicationModes::StandardMaterialEditorMode(TEXT("GraphName")); TSharedPtr FMaterialEditorApplicationModes::GetDefaultEditorLayout(TSharedPtr InMaterialEditor) { const TSharedRef StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_MaterialEditor_Layout_v16") ->AddArea ( FTabManager::NewPrimaryArea() ->SetOrientation(Orient_Vertical) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Horizontal) ->SetSizeCoefficient(0.9f) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Vertical) ->SetSizeCoefficient(0.2f) ->Split ( FTabManager::NewStack() ->SetHideTabWell( true ) ->AddTab( FMaterialEditorTabs::PreviewTabId, ETabState::OpenedTab ) ) ->Split ( FTabManager::NewStack() ->AddTab( FMaterialEditorTabs::PropertiesTabId, ETabState::OpenedTab ) ->AddTab( FMaterialEditorTabs::PreviewSettingsTabId, ETabState::ClosedTab ) ->AddTab( FMaterialEditorTabs::ParameterDefaultsTabId, ETabState::OpenedTab ) ->AddTab( FMaterialEditorTabs::CustomPrimitiveTabId, ETabState::ClosedTab ) ->AddTab( FMaterialEditorTabs::LayerPropertiesTabId, ETabState::ClosedTab ) ->AddTab( FMaterialEditorTabs::MaterialOverviewTabId, ETabState::OpenedTab ) ->SetForegroundTab( FMaterialEditorTabs::PropertiesTabId ) ) ) ->Split ( FTabManager::NewSplitter() ->SetOrientation( Orient_Vertical ) ->SetSizeCoefficient(0.80f) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient(0.8f) ->SetHideTabWell( true ) ->AddTab(FMaterialEditorTabs::GraphEditor, ETabState::OpenedTab) ) ->Split ( FTabManager::NewStack() ->SetSizeCoefficient( 0.20f ) ->AddTab( FMaterialStats::GetGridStatsTabName(), ETabState::ClosedTab ) ->AddTab( FMaterialStats::GetGridOldStatsTabName(), ETabState::ClosedTab ) ->AddTab( FMaterialEditorTabs::FindTabId, ETabState::ClosedTab ) ->AddTab( FMaterialEditorTabs::SubstrateTabId, ETabState::OpenedTab ) ) ) ->Split ( FTabManager::NewSplitter() ->SetOrientation(Orient_Horizontal) ->SetSizeCoefficient(0.2f) ->Split ( FTabManager::NewStack() ->AddTab( FMaterialEditorTabs::PaletteTabId, ETabState::SidebarTab, ESidebarLocation::Right, 0.14f ) ) ) ) ); return StandaloneDefaultLayout; } FMaterialEditorApplicationMode::FMaterialEditorApplicationMode(TSharedPtr InMaterialEditor) : FApplicationMode(FMaterialEditorApplicationModes::StandardMaterialEditorMode, FMaterialEditorApplicationModes::GetLocalizedMode) { MyMaterialEditor = InMaterialEditor; MaterialEditorTabFactories.RegisterFactory(InMaterialEditor->GraphEditorTabFactoryPtr.Pin().ToSharedRef()); TabLayout = FMaterialEditorApplicationModes::GetDefaultEditorLayout(InMaterialEditor); } void FMaterialEditorApplicationMode::RegisterTabFactories(TSharedPtr InTabManager) { TSharedPtr MaterialEditor = MyMaterialEditor.Pin(); MaterialEditor->RegisterToolbarTab(InTabManager.ToSharedRef()); // Mode-specific setup MaterialEditor->PushTabFactories(MaterialEditorTabFactories); FApplicationMode::RegisterTabFactories(InTabManager); } #undef LOCTEXT_NAMESPACE