local inspect = require("inspect") local Debug = require("GameLab.Debug") local ContainerWindow = require("GameLab.Editor.Window.ContainerWindow") local GUIWindow = require("GameLab.Editor.Window.GUIWindow") local SplitWindow = require("GameLab.Editor.Window.SplitWindow") local ESplitMode = GameLab.Editor.Window.ESplitMode local Rect = require("GameLab.Engine.Math.Rect") local EditorWindowManager = {} EditorWindowManager.splitWindows = {} EditorWindowManager.containerWindows = {} EditorWindowManager.guiWindows = {} EditorWindowManager.rootSplitWindow = nil EditorWindowManager.mainWindow = nil local splitWindows = EditorWindowManager.splitWindows local containerWindows = EditorWindowManager.containerWindows local guiWindows = EditorWindowManager.guiWindows -- 申请一个GUIWindow并 EditorWindowManager.ClaimGUIWindow = function() if #splitWindows == 0 then local sp = SplitWindow.New() table.insert( splitWindows, sp) end end EditorWindowManager.SetMainWindow = function(wnd) EditorWindowManager.mainWindow = wnd end EditorWindowManager.TestGUIWindow = function() Debug.Log("TestGUIWindow") local guiWindow = GUIWindow.New() guiWindow:SetContainerWindow(EditorWindowManager.mainWindow) local guiWindow2 = GUIWindow.New() guiWindow2:SetContainerWindow(EditorWindowManager.mainWindow) local guiWindow3 = GUIWindow.New() guiWindow3:SetContainerWindow(EditorWindowManager.mainWindow) local guiWindow4 = GUIWindow.New() guiWindow4:SetContainerWindow(EditorWindowManager.mainWindow) local splitWnd = SplitWindow.New(ESplitMode.Horizontal, {0.3, 0.7} ) EditorWindowManager.rootSplitWindow = splitWnd splitWnd:AddSubWindow(guiWindow) local splitWnd2 = SplitWindow.New(ESplitMode.Vertical, {0.5} ) splitWnd:AddSubWindow(splitWnd2) splitWnd:AddSubWindow(guiWindow4) guiWindow.m_SplitWindow = splitWnd guiWindow4.m_SplitWindow = splitWnd splitWnd2:AddSubWindow(guiWindow2) splitWnd2:AddSubWindow(guiWindow3) guiWindow2.m_SplitWindow = splitWnd2 guiWindow3.m_SplitWindow = splitWnd2 local mainWindowSize = EditorWindowManager.mainWindow:GetSize() local position = Rect() position.x = 0 position.y = 0 position.width = mainWindowSize.x position.height = mainWindowSize.y splitWnd:SetPosition(position) EditorWindowManager.mainWindow:SetRootSplitWindow(splitWnd) end return EditorWindowManager