From 2ab7fad7b308debba0aacbf76831569f360d19a0 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 18 Nov 2021 19:14:35 +0800 Subject: *misc --- Data/Libraries/GameLab/Editor/GUI/init.lua | 5 +++++ .../GameLab/Editor/Window/ContainerWindow.lua | 9 +++++++++ Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 21 +++++++++++++++------ Data/Libraries/GameLab/Editor/Window/init.lua | 20 ++++++++++---------- 4 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 Data/Libraries/GameLab/Editor/GUI/init.lua (limited to 'Data/Libraries') diff --git a/Data/Libraries/GameLab/Editor/GUI/init.lua b/Data/Libraries/GameLab/Editor/GUI/init.lua new file mode 100644 index 0000000..0f01d9f --- /dev/null +++ b/Data/Libraries/GameLab/Editor/GUI/init.lua @@ -0,0 +1,5 @@ +local GUI = GameLab.Package("GameLab.Editor.GUI") + + + +return GUI \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua b/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua index bc7cd82..b709982 100644 --- a/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua @@ -8,6 +8,7 @@ local ContainerWindow = GameLab.GlobalClass("GameLab.Editor.Window.ContainerWind ContainerWindow.Ctor = function(self, position, showMode, min, max) self.m_Native = NativeContainWidow.New(self, position, showMode, min, max) + self.m_RootSplitWindow = Window.SplitWindow.New(Window.ESplitMode.Horizontal) end @@ -15,6 +16,14 @@ ContainerWindow.get_native = function(self) return self.m_Native end +ContainerWindow.get_rootSplitWindow = function(self) + return self.m_RootSplitWindow +end + +ContainerWindow.set_rootSplitWindow = function(self, splitWindow) + self.m_RootSplitWindow = splitWindow +end + ContainerWindow.SetTitle = function(self, title) self.m_Native:SetTitle(title) end diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua index 83e25c3..e2ceee5 100644 --- a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua @@ -1,5 +1,3 @@ - -local GUIWindow = GameLab.GlobalClass("GameLab.Editor.Window.GUIWindow") local NativeGUIWindow = GameLab.Editor.Window.Internal.GUIWindow local inspect = require "inspect" @@ -9,10 +7,12 @@ local Math = require "GameLab.Engine.Math" local Rendering = require "GameLab.Engine.Rendering" local Utils = require "GameLab.Utils" local Events = require "GameLab.Events" +local GUI = require "GameLab.Engine.GUI" local Rect = Math.Rect local Event = Events.Event local Vector2 = Math.Vector2 +local Color = Rendering.Color local clone = Utils.Clone @@ -24,8 +24,13 @@ local col = { {0, 1, 1, 1}, } -GUIWindow.Ctor = function(self) +local kSideBorders = 2 -- GUIView的右边距 +local kTabHeight = 17 -- 标题栏高度 +local kBottomBorders = 2 -- 底部边距 + +local GUIWindow = GameLab.GlobalClass("GameLab.Editor.Window.GUIWindow", function(self) self.m_Native = NativeGUIWindow.New(self) -- native guiwindow + self.m_ContainerWindow = nil self.m_SplitWindow = nil -- parent window self.m_Position = Rect(0,0,0,0) -- 在父ContainerWindow中的位置和大小 @@ -34,7 +39,7 @@ GUIWindow.Ctor = function(self) i = i + 1 self.m_ClearColor = col[i] -end +end ) GUIWindow.get_native = function(self) return self.m_Native @@ -98,11 +103,15 @@ GUIWindow.OnGUI = function(self) local event = Event.current - if self.splitWindow ~= nil and event ~= nil then + local sp = self.splitWindow + if sp ~= nil and event ~= nil then local e = clone(event) e.mousePosition:Add(self.position.xy) -- 坐标转换到全局containerWindow的坐标 - self.splitWindow:DoSplit(e) + sp:DoSplit(e) end + + GUI.Box(Rect(), Color(), self.position.size) + end GUIWindow.GetContainerWindow = function(self) diff --git a/Data/Libraries/GameLab/Editor/Window/init.lua b/Data/Libraries/GameLab/Editor/Window/init.lua index 84cb46d..13c75bb 100644 --- a/Data/Libraries/GameLab/Editor/Window/init.lua +++ b/Data/Libraries/GameLab/Editor/Window/init.lua @@ -6,16 +6,16 @@ import "GUIWindow" import "SplitWindow" --[[ -GameLab编辑器窗口 - -窗口层级 触发事件 逻辑窗口 数量 说明 -ContainerWindow 是 [1,n] 有唯一的一个MainWindow,可以有多个其余ShowMode的窗口 -|- SplitWindow 是 1:1 一个ContainerWindow下只有一个root SplitWindow,然后以树形结构嵌套子窗口GUIWindow或SplitWindow - |- GUIWindow 是 1:[n,0] 一个SplitWindow下可能有GUIWindow,也可能是SplitWindow - |- EditorWindow 是 1:[n,1] 一个GUIWindow下至少有一个EditorWindow - -ContinerWindow和GUIWindow是windows事件产生的窗口,SplitWindow和EditorWindow是逻辑窗口,本身不会 -产生输入事件 + GameLab编辑器窗口 + + 窗口层级 触发事件 逻辑窗口 数量 说明 + ContainerWindow 是 [1,n] 有唯一的一个MainWindow,可以有多个其余ShowMode的窗口 + |- SplitWindow 是 1:1 一个ContainerWindow下只有一个root SplitWindow,然后以树形结构嵌套子窗口GUIWindow或SplitWindow + |- GUIWindow 是 1:[n,0] 一个SplitWindow下可能有GUIWindow,也可能是SplitWindow + |- EditorWindow 是 1:[n,1] 一个GUIWindow下至少有一个EditorWindow + + ContinerWindow和GUIWindow是windows事件产生的窗口,SplitWindow和EditorWindow是逻辑窗口,本身不会 + 产生输入事件 ]] return m \ No newline at end of file -- cgit v1.1-26-g67d0