From 0e0aa82ab2ebc9f15519cea710a52c5895690152 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 11 Nov 2021 18:27:36 +0800 Subject: * rename Editor.GUI to Editor.Window --- .../Libraries/GameLab/Engine/GUI/IMGUI.lua | 39 ++++++++++++ .../Libraries/GameLab/Engine/GUI/init.lua | 3 + .../Libraries/GameLab/Engine/Math/Rect.lua | 4 ++ .../GameLab/Editor/GUI/ContainerWindow.lua | 20 ------- Data/Libraries/GameLab/Editor/GUI/FontManager.lua | 0 Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua | 65 -------------------- Data/Libraries/GameLab/Editor/GUI/IMGUI.lua | 10 ---- Data/Libraries/GameLab/Editor/GUI/SplitWindow.lua | 32 ---------- Data/Libraries/GameLab/Editor/GUI/init.lua | 9 --- .../GameLab/Editor/Window/ContainerWindow.lua | 20 +++++++ .../GameLab/Editor/Window/FontManager.lua | 0 Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 70 ++++++++++++++++++++++ .../GameLab/Editor/Window/SplitWindow.lua | 32 ++++++++++ Data/Libraries/GameLab/Editor/Window/init.lua | 9 +++ Data/Scripts/EditorApplication.lua | 2 +- Data/Scripts/EditorGUI/EditorWindowManager.lua | 6 +- Data/boot.lua | 3 +- 17 files changed, 183 insertions(+), 141 deletions(-) create mode 100644 Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua create mode 100644 Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua delete mode 100644 Data/Libraries/GameLab/Editor/GUI/ContainerWindow.lua delete mode 100644 Data/Libraries/GameLab/Editor/GUI/FontManager.lua delete mode 100644 Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua delete mode 100644 Data/Libraries/GameLab/Editor/GUI/IMGUI.lua delete mode 100644 Data/Libraries/GameLab/Editor/GUI/SplitWindow.lua delete mode 100644 Data/Libraries/GameLab/Editor/GUI/init.lua create mode 100644 Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua create mode 100644 Data/Libraries/GameLab/Editor/Window/FontManager.lua create mode 100644 Data/Libraries/GameLab/Editor/Window/GUIWindow.lua create mode 100644 Data/Libraries/GameLab/Editor/Window/SplitWindow.lua create mode 100644 Data/Libraries/GameLab/Editor/Window/init.lua (limited to 'Data') diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua new file mode 100644 index 0000000..f8cc33b --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua @@ -0,0 +1,39 @@ +local Debug = GameLab.Debug + +local GUI = GameLab.Engine.GUI or {} +GameLab.Engine.GUI = GUI + +local Event = GameLab.Events.Event + +local imgui = { + currentId = 0, -- 当前可分配的controlID +} + +GUI.GetControlID = function() + imgui.currentId = imgui.currentId + 1 + return imgui.currentId +end + +-- 每次调用OnGUI(无论是哪个事件)都要重新调用BeginOnGUI方法进行重置 +GUI.BeginOnGUI = function() + imgui.currentId = 0 +end + +GUI.EndOnGUI = function() + imgui.currentId = 0 +end + +GUI.BeginFrame = function() + +end + +GUI.EndFrame = function() + +end + +GUI.Button = function() + local id = GUI.GetControlID() + +end + +return GUI \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua new file mode 100644 index 0000000..4b83ddc --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua @@ -0,0 +1,3 @@ +local import = GameLab.import(...) + +import("IMGUI") diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua index f603ed5..75b550d 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua @@ -14,4 +14,8 @@ Rect.Set = function(self, rect) self.w = rect.w or rect[4] end +Rect.Contains = function(self, point) + +end + return Rect \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/GUI/ContainerWindow.lua b/Data/Libraries/GameLab/Editor/GUI/ContainerWindow.lua deleted file mode 100644 index b270110..0000000 --- a/Data/Libraries/GameLab/Editor/GUI/ContainerWindow.lua +++ /dev/null @@ -1,20 +0,0 @@ -local NativeContainWidow = GameLab.Editor.GUI.Internal.ContainerWindow -local ContainerWindow = GameLab.GlobalClass("GameLab.Editor.GUI.ContainerWindow") - -ContainerWindow.Ctor = function(self, position, showMode, min, max) - self.m_Native = NativeContainWidow.New(position, showMode, min, max) -end - -ContainerWindow.SetTitle = function(self) - self.m_Native:SetTitle(self) -end - -ContainerWindow.SetIcon = function(self) - self.m_Native:SetIcon(self) -end - -ContainerWindow.GetNative = function(self) - return self.m_Native -end - -return ContainerWindow \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/GUI/FontManager.lua b/Data/Libraries/GameLab/Editor/GUI/FontManager.lua deleted file mode 100644 index e69de29..0000000 diff --git a/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua b/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua deleted file mode 100644 index 8165faa..0000000 --- a/Data/Libraries/GameLab/Editor/GUI/GUIWindow.lua +++ /dev/null @@ -1,65 +0,0 @@ -local GUIWindow = GameLab.GlobalClass("GameLab.Editor.GUI.GUIWindow") -local NativeGUIWindow = GameLab.Editor.GUI.Internal.GUIWindow - -local inspect = require("inspect") - -local Debug = GameLab.Debug -local GL = GameLab.Engine.GL -local Math = GameLab.Engine.Math -local Rendering = GameLab.Engine.Rendering - -local Rect = Math.Rect - -local i = 0 -local col = { - {1, 0, 0, 1}, - {1, 1, 0, 1}, - {1, 0, 1, 1}, -} - -GUIWindow.Ctor = function(self) - self.m_Native = NativeGUIWindow.New(self) - self.m_ContainerWindow = nil - self.m_SplitWindow = nil -- parent window - self.m_Position = Rect.New(0,0,0,0) -- 在父窗口中的位置和大小 - self.m_EditorWindows = {} -- 编辑器脚本 - - i = i + 1 - self.m_ClearColor = col[i] -end - -GUIWindow.SetContainerWindow = function(self, containerWindow) - self.m_ContainerWindow = containerWindow - self.m_Native:SetContainerWindow(containerWindow:GetNative()) -end - -GUIWindow.SetPosition = function(self, pos) - self.m_Position:Set(pos) - self.m_Native:SetPosition(pos) -end - -GUIWindow.GetNative = function(self) - return self.m_Native -end - -GUIWindow.OnGUI = function(self) - self:ClearBackground() - - -end - -GUIWindow.GetContainerWindow = function(self) - return self.m_ContainerWindow -end - -GUIWindow.OnFocus = function(self) - Debug.Log("GUIWindow.OnFocus") -end - -GUIWindow.ClearBackground = function(self) - GL.ClearColor(self.m_ClearColor) - GL.Clear(GL.EBufferType.ColorBuffer) - -end - -return GUIWindow \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/GUI/IMGUI.lua b/Data/Libraries/GameLab/Editor/GUI/IMGUI.lua deleted file mode 100644 index 334b569..0000000 --- a/Data/Libraries/GameLab/Editor/GUI/IMGUI.lua +++ /dev/null @@ -1,10 +0,0 @@ -local imgui = GameLab.Editor.GUI or {} -GameLab.Editor.GUI = imgui - -local Event = GameLab.Events.Event - -imgui.Button = function() - -end - -return imgui \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/GUI/SplitWindow.lua b/Data/Libraries/GameLab/Editor/GUI/SplitWindow.lua deleted file mode 100644 index 214eed6..0000000 --- a/Data/Libraries/GameLab/Editor/GUI/SplitWindow.lua +++ /dev/null @@ -1,32 +0,0 @@ -local Splitter = GameLab.Class("GameLab.Editor.GUI.Internal.Splitter") - -Splitter.Ctor = function(self) - self.width = 10 -end - --- 抽象的窗口,用来处理布局 -local SplitWindow = GameLab.GlobalClass("GameLab.Editor.GUI.SplitWindow") - -local ESplitMode = GameLab.GlobalEnum("GameLab.Editor.GUI.ESplitMode", { - "Vertical", - "Horizontal" -}) - -SplitWindow.Ctor = function(self) - self.m_Splitter = {} - self.m_SplitMode = ESplitMode.Horizontal - self.m_GUIWindows = {} - self.m_Parent = nil -- 父节点也是一个split window - self.m_SubSplit = {} -- 子节点也是split windows -end - -SplitWindow.DoSplit = function(self) - -end - --- 返回guiWnd -SplitWindow.IndexOfGUIWindow = function(self, guiWnd) - -end - -return SplitWindow \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/GUI/init.lua b/Data/Libraries/GameLab/Editor/GUI/init.lua deleted file mode 100644 index 5507a16..0000000 --- a/Data/Libraries/GameLab/Editor/GUI/init.lua +++ /dev/null @@ -1,9 +0,0 @@ -GameLab.Editor.GUI = GameLab.Editor.GUI or {} -local m = GameLab.Editor.GUI - -local import = GameLab.import(...) - -import("ContainerWindow") -import("GUIWindow") - -return m \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua b/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua new file mode 100644 index 0000000..2936101 --- /dev/null +++ b/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua @@ -0,0 +1,20 @@ +local NativeContainWidow = GameLab.Editor.Window.Internal.ContainerWindow +local ContainerWindow = GameLab.GlobalClass("GameLab.Editor.Window.ContainerWindow") + +ContainerWindow.Ctor = function(self, position, showMode, min, max) + self.m_Native = NativeContainWidow.New(position, showMode, min, max) +end + +ContainerWindow.SetTitle = function(self) + self.m_Native:SetTitle(self) +end + +ContainerWindow.SetIcon = function(self) + self.m_Native:SetIcon(self) +end + +ContainerWindow.GetNative = function(self) + return self.m_Native +end + +return ContainerWindow \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/Window/FontManager.lua b/Data/Libraries/GameLab/Editor/Window/FontManager.lua new file mode 100644 index 0000000..e69de29 diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua new file mode 100644 index 0000000..cb05518 --- /dev/null +++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua @@ -0,0 +1,70 @@ +local GUIWindow = GameLab.GlobalClass("GameLab.Editor.Window.GUIWindow") +local NativeGUIWindow = GameLab.Editor.Window.Internal.GUIWindow + +local inspect = require("inspect") + +local Debug = GameLab.Debug +local GL = GameLab.Engine.GL +local Math = GameLab.Engine.Math +local Rendering = GameLab.Engine.Rendering + +local Rect = Math.Rect +local Event = GameLab.Events.Event + +local i = 0 +local col = { + {1, 0, 0, 1}, + {1, 1, 0, 1}, + {1, 0, 1, 1}, +} + +GUIWindow.Ctor = function(self) + self.m_Native = NativeGUIWindow.New(self) + self.m_ContainerWindow = nil + self.m_SplitWindow = nil -- parent window + self.m_Position = Rect.New(0,0,0,0) -- 在父窗口中的位置和大小 + self.m_EditorWindows = {} -- 编辑器脚本 + + i = i + 1 + self.m_ClearColor = col[i] +end + +GUIWindow.SetContainerWindow = function(self, containerWindow) + self.m_ContainerWindow = containerWindow + self.m_Native:SetContainerWindow(containerWindow:GetNative()) +end + +GUIWindow.SetPosition = function(self, pos) + self.m_Position:Set(pos) + self.m_Native:SetPosition(pos) +end + +GUIWindow.GetNative = function(self) + return self.m_Native +end + +GUIWindow.OnGUI = function(self) + self:ClearBackground() + + local event = Event.current + + if self.m_SplitWindow then + self.m_SplitWindow:DoSplit(event) + end +end + +GUIWindow.GetContainerWindow = function(self) + return self.m_ContainerWindow +end + +GUIWindow.OnFocus = function(self) + Debug.Log("GUIWindow.OnFocus") +end + +GUIWindow.ClearBackground = function(self) + GL.ClearColor(self.m_ClearColor) + GL.Clear(GL.EBufferType.ColorBuffer) + +end + +return GUIWindow \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua new file mode 100644 index 0000000..f5d410c --- /dev/null +++ b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua @@ -0,0 +1,32 @@ +local Splitter = GameLab.Class("GameLab.Editor.Window.Internal.Splitter") + +Splitter.Ctor = function(self) + self.width = 10 +end + +-- 抽象的窗口,用来处理布局 +local SplitWindow = GameLab.GlobalClass("GameLab.Editor.Window.SplitWindow") + +local ESplitMode = GameLab.GlobalEnum("GameLab.Editor.Window.ESplitMode", { + "Vertical", + "Horizontal" +}) + +SplitWindow.Ctor = function(self) + self.m_Splitter = {} + self.m_SplitMode = ESplitMode.Horizontal + self.m_GUIWindows = {} + self.m_Parent = nil -- 父节点也是一个split window + self.m_SubSplit = {} -- 子节点也是split windows +end + +SplitWindow.DoSplit = function(self, event) + +end + +-- 返回guiWnd +SplitWindow.IndexOfGUIWindow = function(self, guiWnd) + +end + +return SplitWindow \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/Window/init.lua b/Data/Libraries/GameLab/Editor/Window/init.lua new file mode 100644 index 0000000..07f2a92 --- /dev/null +++ b/Data/Libraries/GameLab/Editor/Window/init.lua @@ -0,0 +1,9 @@ +GameLab.Editor.Window = GameLab.Editor.Window or {} +local m = GameLab.Editor.Window + +local import = GameLab.import(...) + +import("ContainerWindow") +import("GUIWindow") + +return m \ No newline at end of file diff --git a/Data/Scripts/EditorApplication.lua b/Data/Scripts/EditorApplication.lua index 9e2b632..4c4a708 100644 --- a/Data/Scripts/EditorApplication.lua +++ b/Data/Scripts/EditorApplication.lua @@ -8,7 +8,7 @@ local Engine = GameLab.Engine local Resource = GameLab.Engine.Resource local Rendering = GameLab.Engine.Rendering local Debug = GameLab.Debug -local GUI = GameLab.Editor.GUI +local GUI = GameLab.Editor.Window local GL = GameLab.Engine.GL local app = GameLab.Editor.EditorApplication.New() diff --git a/Data/Scripts/EditorGUI/EditorWindowManager.lua b/Data/Scripts/EditorGUI/EditorWindowManager.lua index 693cb9e..27dd16d 100644 --- a/Data/Scripts/EditorGUI/EditorWindowManager.lua +++ b/Data/Scripts/EditorGUI/EditorWindowManager.lua @@ -1,6 +1,6 @@ -local ContainerWindow = require("GameLab.Editor.GUI.ContainerWindow") -local GUIWindow = require("GameLab.Editor.GUI.GUIWindow") -local SplitWindow = require("GameLab.Editor.GUI.SplitWindow") +local ContainerWindow = require("GameLab.Editor.Window.ContainerWindow") +local GUIWindow = require("GameLab.Editor.Window.GUIWindow") +local SplitWindow = require("GameLab.Editor.Window.SplitWindow") local EditorWindowManager = {} diff --git a/Data/boot.lua b/Data/boot.lua index 6f583bc..bb95b16 100644 --- a/Data/boot.lua +++ b/Data/boot.lua @@ -26,12 +26,13 @@ end require "GameLab" require "GameLab.Events" require "GameLab.Engine" +require "GameLab.Engine.GUI" require "GameLab.Engine.Math" require "GameLab.Engine.Rendering" require "GameLab.Engine.Resource" require "GameLab.Engine.GL" require "GameLab.Editor" -require "GameLab.Editor.GUI" +require "GameLab.Editor.Window" -- debugging require("LuaPanda").start("127.0.0.1",8818) -- cgit v1.1-26-g67d0