diff --git a/src/Editor/Ghost.Editor/App.xaml b/src/Editor/Ghost.Editor/App.xaml index a329b04..3df924f 100644 --- a/src/Editor/Ghost.Editor/App.xaml +++ b/src/Editor/Ghost.Editor/App.xaml @@ -10,6 +10,7 @@ + diff --git a/src/Editor/Ghost.Editor/Themes/DockingDictionary.xaml b/src/Editor/Ghost.Editor/Themes/DockingDictionary.xaml new file mode 100644 index 0000000..13dd43f --- /dev/null +++ b/src/Editor/Ghost.Editor/Themes/DockingDictionary.xaml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/Editor/Ghost.Editor/View/Windows/EngineEditorWindow.xaml.cs b/src/Editor/Ghost.Editor/View/Windows/EngineEditorWindow.xaml.cs index a0f8668..8c9bb9e 100644 --- a/src/Editor/Ghost.Editor/View/Windows/EngineEditorWindow.xaml.cs +++ b/src/Editor/Ghost.Editor/View/Windows/EngineEditorWindow.xaml.cs @@ -43,6 +43,41 @@ internal sealed partial class EngineEditorWindow : WindowEx _notificationService.SetReference(InfoBar, NotificationQueue); _progressService.SetReference(ProgressBarContainer); + + InitializeDockingLayout(); + } + + private void InitializeDockingLayout() + { + var sceneDoc = new Ghost.Editor.View.Controls.Docking.DockDocument { Title = "Scene", Content = new Ghost.Editor.View.Pages.EngineEditor.ScenePage() }; + var hierarchyDoc = new Ghost.Editor.View.Controls.Docking.DockDocument { Title = "Hierarchy", Content = new Ghost.Editor.View.Controls.Hierarchy() }; + var inspectorDoc = new Ghost.Editor.View.Controls.Docking.DockDocument { Title = "Inspector", Content = new Ghost.Editor.View.Pages.EngineEditor.InspectorPage() }; + var projectDoc = new Ghost.Editor.View.Controls.Docking.DockDocument { Title = "Project", Content = new Ghost.Editor.View.Controls.ProjectBrowser() }; + var consoleDoc = new Ghost.Editor.View.Controls.Docking.DockDocument { Title = "Console", Content = new Ghost.Editor.View.Pages.EngineEditor.ConsolePage() }; + + var leftGroup = new Ghost.Editor.View.Controls.Docking.DockGroup(); + leftGroup.AddChild(hierarchyDoc); + + var centerGroup = new Ghost.Editor.View.Controls.Docking.DockGroup(); + centerGroup.AddChild(sceneDoc); + + var rightGroup = new Ghost.Editor.View.Controls.Docking.DockGroup(); + rightGroup.AddChild(inspectorDoc); + + var bottomGroup = new Ghost.Editor.View.Controls.Docking.DockGroup(); + bottomGroup.AddChild(projectDoc); + bottomGroup.AddChild(consoleDoc); + + var topPanel = new Ghost.Editor.View.Controls.Docking.DockPanel { Orientation = Microsoft.UI.Xaml.Controls.Orientation.Horizontal }; + topPanel.AddChild(leftGroup); + topPanel.AddChild(centerGroup); + topPanel.AddChild(rightGroup); + + var rootPanel = new Ghost.Editor.View.Controls.Docking.DockPanel { Orientation = Microsoft.UI.Xaml.Controls.Orientation.Vertical }; + rootPanel.AddChild(topPanel); + rootPanel.AddChild(bottomGroup); + + MainDockingLayout.RootModule = rootPanel; } private void MainGrid_Unloaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)