summaryrefslogtreecommitdiff
path: root/Data/Libraries
diff options
context:
space:
mode:
Diffstat (limited to 'Data/Libraries')
-rw-r--r--Data/Libraries/GameLab/Editor/Window/GUIWindow.lua39
-rw-r--r--Data/Libraries/GameLab/Editor/Window/SplitWindow.lua14
-rw-r--r--Data/Libraries/GameLab/Editor/Window/init.lua6
-rw-r--r--Data/Libraries/GameLab/Editor/init.lua4
4 files changed, 51 insertions, 12 deletions
diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua
index 483f2b3..2df0e49 100644
--- a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua
+++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua
@@ -14,6 +14,8 @@ local Rect = Math.Rect
local Event = Events.Event
local Vector2 = Math.Vector2
+local clone = Utils.Clone
+
local i = 0
local col = {
{1, 0, 0, 1},
@@ -28,18 +30,44 @@ GUIWindow.Ctor = function(self)
self.m_SplitWindow = nil -- parent window
self.m_Position = Rect(0,0,0,0) -- 在父ContainerWindow中的位置和大小
self.m_EditorWindows = {} -- 编辑器脚本
+ self.m_CurEditor = nil
i = i + 1
self.m_ClearColor = col[i]
end
+GUIWindow.get_editorWindows = function(self)
+ return self.m_EditorWindows
+end
+
+GUIWindow.get_containerWindow = function(self)
+ return self.m_ContainerWindow
+end
+
+GUIWindow.get_splitWindow = function(self)
+ return self.m_SplitWindow
+end
+
+GUIWindow.get_currentEditorWindow = function(self)
+ return self.m_CurEditor
+end
+
+GUIWindow.get_position = function(self)
+ return self.m_Position
+end
+
+GUIWindow.set_position = function(self, position)
+ self.m_Position:Set(position)
+ self.m_Native:SetPosition({position.x, position.y, position.width, position.height})
+end
+
GUIWindow.SetContainerWindow = function(self, containerWindow)
self.m_ContainerWindow = containerWindow
self.m_Native:SetContainerWindow(containerWindow:GetNative())
end
-GUIWindow.AddEditorWindow = function(self)
-
+GUIWindow.AddEditorWindow = function(self, editorWindow)
+ table.insert(self.m_EditorWindows, editorWindow)
end
GUIWindow.SetPosition = function(self, pos)
@@ -55,15 +83,16 @@ GUIWindow.GetNative = function(self)
return self.m_Native
end
+-- 最主要的回调函数,同时处理窗口管理、事件、布局、渲染
GUIWindow.OnGUI = function(self)
self:ClearBackground()
local event = Event.current
- if self.m_SplitWindow ~= nil and event ~= nil then
- local e = Events.CopyEvent(event)
+ if self.splitWindow ~= nil and event ~= nil then
+ local e = clone(event)
e.mousePosition:Add(self.m_Position:GetPosition()) -- 坐标转换到全局containerWindow的坐标
- self.m_SplitWindow:DoSplit(e)
+ self.splitWindow:DoSplit(e)
end
end
diff --git a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua
index 2a01e53..fea443d 100644
--- a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua
+++ b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua
@@ -66,6 +66,16 @@ SplitWindow.set_containerWindow = function(self, wnd)
self.m_ContainerWindow = wnd
end
+SplitWindow.get_position = function(self)
+ return self.m_Position
+end
+
+SplitWindow.set_position = function(self, position)
+ if position:Is(Rect) then
+ self:SetPosition(position)
+ end
+end
+
-- 布局,设置GUIWindow的大小
SplitWindow.DoSplit = function(self, event)
if self.m_Parent ~= nil then
@@ -112,7 +122,7 @@ SplitWindow.DoSplit = function(self, event)
splitter.value = mousePos.y / self.m_Position.height
end
splitter.value = Math.Clamp(splitter.value, 0, 1)
- self:SetPosition(self.m_Position)
+ self.position = self.m_Position
end
end
elseif event.type == EEventType.MouseUp then
@@ -138,7 +148,7 @@ SplitWindow.SetPosition = function(self, position)
pos.y = pos.y + prev * position.height
pos.height = position.height * (next - prev)
end
- subWindow:SetPosition(pos)
+ subWindow.position = pos
end
end
diff --git a/Data/Libraries/GameLab/Editor/Window/init.lua b/Data/Libraries/GameLab/Editor/Window/init.lua
index ff99dd9..84cb46d 100644
--- a/Data/Libraries/GameLab/Editor/Window/init.lua
+++ b/Data/Libraries/GameLab/Editor/Window/init.lua
@@ -1,9 +1,9 @@
local m = GameLab.Package("GameLab.Editor.Window")
local import = GameLab.Import(...)
-import("ContainerWindow")
-import("GUIWindow")
-import("SplitWindow")
+import "ContainerWindow"
+import "GUIWindow"
+import "SplitWindow"
--[[
GameLab编辑器窗口
diff --git a/Data/Libraries/GameLab/Editor/init.lua b/Data/Libraries/GameLab/Editor/init.lua
index b33a9e1..94486f8 100644
--- a/Data/Libraries/GameLab/Editor/init.lua
+++ b/Data/Libraries/GameLab/Editor/init.lua
@@ -1,7 +1,7 @@
local m = GameLab.Package("GameLab.Editor")
local import = GameLab.Import(...)
-m.AssetManager = import("AssetManager")
-m.EditorWindow = import("EditorWindow")
+m.AssetManager = import "AssetManager"
+m.EditorWindow = import "EditorWindow"
return m \ No newline at end of file