From 9421ca53788e51a92b28056e06af3d9dd6b4d92c Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 17 Nov 2021 00:46:58 +0800 Subject: *rename --- Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 39 +++++++++++++++++++--- .../GameLab/Editor/Window/SplitWindow.lua | 14 ++++++-- Data/Libraries/GameLab/Editor/Window/init.lua | 6 ++-- Data/Libraries/GameLab/Editor/init.lua | 4 +-- 4 files changed, 51 insertions(+), 12 deletions(-) (limited to 'Data/Libraries') 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 -- cgit v1.1-26-g67d0