diff options
Diffstat (limited to 'Data/Libraries')
-rw-r--r-- | Data/Libraries/GameLab/Editor/GUI/init.lua | 5 | ||||
-rw-r--r-- | Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua | 9 | ||||
-rw-r--r-- | Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 21 | ||||
-rw-r--r-- | Data/Libraries/GameLab/Editor/Window/init.lua | 20 |
4 files changed, 39 insertions, 16 deletions
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 |