From 14fa5cd8b00cf10d53c829caa0d5f9b40a3d8d3f Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 15 Nov 2021 03:10:34 +0800 Subject: *rename --- Data/DefaultContent/Libraries/GameLab/Class.lua | 3 +- .../Libraries/GameLab/Debug/init.lua | 3 +- Data/DefaultContent/Libraries/GameLab/Delegate.lua | 38 ++++++++++++++++++++++ .../Libraries/GameLab/Engine/Animation/init.lua | 7 ++-- .../Libraries/GameLab/Engine/GL/init.lua | 5 ++- .../Libraries/GameLab/Engine/GUI/IMGUI.lua | 1 - .../Libraries/GameLab/Engine/GUI/init.lua | 4 +-- .../Libraries/GameLab/Engine/Math/Quaternion.lua | 2 +- .../Libraries/GameLab/Engine/Math/Rect.lua | 4 +-- .../Libraries/GameLab/Engine/Math/Vector2.lua | 10 ++++-- .../Libraries/GameLab/Engine/Math/Vector3.lua | 2 +- .../Libraries/GameLab/Engine/Math/Vector4.lua | 18 +++++----- .../Libraries/GameLab/Engine/Math/init.lua | 13 ++++---- .../Libraries/GameLab/Engine/Rendering/Image.lua | 2 +- .../Libraries/GameLab/Engine/Rendering/init.lua | 3 +- .../Libraries/GameLab/Engine/Resource/init.lua | 3 +- .../Libraries/GameLab/Engine/init.lua | 5 ++- Data/DefaultContent/Libraries/GameLab/Entity.lua | 11 +++++++ Data/DefaultContent/Libraries/GameLab/Enum.lua | 11 ++++--- .../Libraries/GameLab/Events/init.lua | 5 +-- .../Libraries/GameLab/GlobalEnum.lua | 20 ++++++------ .../Libraries/GameLab/GlobalTable.lua | 8 ++--- Data/DefaultContent/Libraries/GameLab/Node.lua | 7 ---- Data/DefaultContent/Libraries/GameLab/Package.lua | 13 ++++++++ .../Libraries/GameLab/Utils/init.lua | 3 +- Data/DefaultContent/Libraries/GameLab/init.lua | 11 +++---- Data/DefaultContent/Libraries/strict.lua | 30 +++++++++++++++++ Data/Libraries/GameLab/Editor/EditorWindow.lua | 11 +++---- .../GameLab/Editor/Window/ContainerWindow.lua | 2 +- Data/Libraries/GameLab/Editor/Window/GUIWindow.lua | 4 +-- .../GameLab/Editor/Window/SplitWindow.lua | 8 +++-- Data/Libraries/GameLab/Editor/Window/init.lua | 4 +-- Data/Libraries/GameLab/Editor/init.lua | 4 +-- Data/Scripts/Editor/AssetBrowser.lua | 2 +- Data/Scripts/EditorApplication.lua | 7 ++-- Data/Scripts/EditorGUI/EditorWindowManager.lua | 2 +- Data/boot.lua | 2 +- 37 files changed, 180 insertions(+), 108 deletions(-) create mode 100644 Data/DefaultContent/Libraries/GameLab/Delegate.lua create mode 100644 Data/DefaultContent/Libraries/GameLab/Entity.lua delete mode 100644 Data/DefaultContent/Libraries/GameLab/Node.lua create mode 100644 Data/DefaultContent/Libraries/GameLab/Package.lua create mode 100644 Data/DefaultContent/Libraries/strict.lua (limited to 'Data') diff --git a/Data/DefaultContent/Libraries/GameLab/Class.lua b/Data/DefaultContent/Libraries/GameLab/Class.lua index 0b424a6..005a7ce 100644 --- a/Data/DefaultContent/Libraries/GameLab/Class.lua +++ b/Data/DefaultContent/Libraries/GameLab/Class.lua @@ -1,4 +1,5 @@ --- GameLab内置class模块 +-- Declare class + -- 保留方法名:New, Ctor, Is -- 保留字段:_type, _base diff --git a/Data/DefaultContent/Libraries/GameLab/Debug/init.lua b/Data/DefaultContent/Libraries/GameLab/Debug/init.lua index 0b6bd7c..b2079a7 100644 --- a/Data/DefaultContent/Libraries/GameLab/Debug/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Debug/init.lua @@ -1,5 +1,4 @@ -local Debug = GameLab.Debug or {} -GameLab.Debug = Debug +local Debug = GameLab.Package("GameLab.Debug") local c_log = GameLab.Debug.Log local c_log_editor = GameLab.Debug.LogEditor diff --git a/Data/DefaultContent/Libraries/GameLab/Delegate.lua b/Data/DefaultContent/Libraries/GameLab/Delegate.lua new file mode 100644 index 0000000..baa8e86 --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/Delegate.lua @@ -0,0 +1,38 @@ +local delegate = {} + +delegate.__index = delegate + +delegate.Add = function(self, action) + table.insert(self.actions, action) + return self +end + +delegate.Remove = function(self, action) + table.remove(self.actions, action) + return self +end + +delegate.Invoke = function(self, ...) + for _, f in ipairs(self.actions) do + if f then + f(...) + end + end +end + +delegate.__call = function(self, ...) + self:Invoke(...) +end + +local mt = {} +mt.__call = function() + local d = {} + d.actions = {} + setmetatable(d, delegate) + return d +end +setmetatable(delegate, mt) + +GameLab.Delegate = delegate + +return delegate \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Animation/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Animation/init.lua index 032f42d..e774739 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Animation/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Animation/init.lua @@ -1,6 +1,3 @@ -GameLab.Animation = GameLab.Animation or {} -local m = GameLab.Animation +local animation = GameLab.Package("GameLab.Animation") - - -return m \ No newline at end of file +return animation \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/GL/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/GL/init.lua index f69d1f6..411d73e 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/GL/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/GL/init.lua @@ -1,10 +1,9 @@ -local GL = GameLab.Engine.GL or {} -GameLab.Engine.GL = GL +local GL = GameLab.Package("GameLab.Engine.GL") local Matrix44 = GameLab.find("GameLab.Engine.Math.Matrix44") GL.LoadPixelMatrix = function(l, r, b, t) - local ortho = Matrix44.New() + local ortho = Matrix44() ortho:SetOrtho(l, r, b, t, 0.1, 10) GL.MatrixMode(GL.EMatrixMode.Projection) GL.LoadIdentity() diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua index 4c10780..6b324d3 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua @@ -15,7 +15,6 @@ GUI.GetControlID = function() return imgui.currentId end --- 每次调用OnGUI(无论是哪个事件)都要重新调用BeginOnGUI方法进行重置 GUI.BeginOnGUI = function() imgui.currentId = 0 end diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua index d8bd558..b77a695 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua @@ -1,6 +1,4 @@ -local GUI = GameLab.Engine.GUI or {} -GameLab.Engine.GUI = GUI - +local GUI = GameLab.Package("GameLab.Engine.GUI") local import = GameLab.import(...) import("imgui") diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Quaternion.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Quaternion.lua index 4d690e3..67761d7 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Quaternion.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Quaternion.lua @@ -1,4 +1,4 @@ -local Quaternion = {} +local Quaternion = GameLab.GlobalClass("GameLab.Engine.Math.Quaternion") Quaternion.Ctor = function(self) self.x = 0 diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua index 5284cf9..e7f29c6 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua @@ -22,12 +22,12 @@ Rect.Set = function(self, rect) end Rect.GetPosition = function(self) - local v = GameLab.Engine.Math.Vector2.New(self.x, self.y) + local v = GameLab.Engine.Math.Vector2(self.x, self.y) return v end Rect.GetSize = function(self) - local v = GameLab.Engine.Math.Vector2.New(self.width, self.height) + local v = GameLab.Engine.Math.Vector2(self.width, self.height) return v end diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua index eb4c14b..4706423 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua @@ -1,20 +1,24 @@ local Vector2 = GameLab.GlobalClass("GameLab.Engine.Math.Vector2") -Vector2.Ctor = function(self, x, y) +function Vector2:Ctor(x, y) self.x = x or 0 self.y = y or 0 end -Vector2.__add = function(self, other) +function Vector2:__add(other) self.x = self.x + other.x self.y = self.y + other.y return self end -Vector2.Add = function(self, other) +function Vector2:Add(other) self.x = self.x + other.x self.y = self.y + other.y return self end +function Vector2:__tostring() + return string.format("%0.3f,%0.3f", self.x, self.y) +end + return Vector2 \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua index 8203b1f..3fcf60b 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua @@ -1,6 +1,6 @@ local Vector3 = GameLab.GlobalClass("GameLab.Engine.Math.Vector3") -Vector3.Ctor = function(self, x, y, z) +function Vector3:Ctor(x, y, z) self.x = x or 0 self.y = y or 0 self.z = z or 0 diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua index ecfc9ff..c50fd69 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua @@ -1,41 +1,41 @@ local Vector4 = GameLab.GlobalClass("GameLab.Engine.Math.Vector4") -Vector4.Ctor = function (self, x, y, z, w) +function Vector4:Ctor(x, y, z, w) self.x = x or 0 self.y = y or 0 self.z = z or 0 self.w = w or 0 end -Vector4.Magnitude = function (self) +function Vector4:Magnitude() end -Vector4.Normalized = function (self) +function Vector4:Normalized() end -Vector4.SqrMagnitude = function (self) +function Vector4:SqrMagnitude() end -Vector4.Distance = function (self, to) +function Vector4:Distance(to) end -Vector4.Dot = function(self, v) +function Vector4:Dot(v) end -Vector4.Lerp = function(self, v, t) +function Vector4:Lerp(v, t) end -Vector4.Project = function (self, v) +function Vector4:Project(v) end -Vector4.Scale = function(self, scale) +function Vector4:Scale(scale) end diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua index 68934e5..4180e5f 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua @@ -1,5 +1,4 @@ -local m = GameLab.Engine.Math or {} -GameLab.Engine.Math = m +local math = GameLab.Package("GameLab.Engine.Math") local import = GameLab.import(...) @@ -14,16 +13,16 @@ import("Rect") GameLab.Debug.Log("GameLab.Engine.Math loaded") -m.Max = function(a, b) +math.Max = function(a, b) return a >= b and a or b end -m.Min = function(a, b) +math.Min = function(a, b) return a <= b and a or b end -m.Clamp = function(v, min, max) - return m.Min(m.Max(v, min), max) +math.Clamp = function(v, min, max) + return math.Min(math.Max(v, min), max) end -return m \ No newline at end of file +return math \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua index 5ef75e5..6601fda 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua @@ -1,4 +1,4 @@ --- Image在texture基础上增加了一些元数据 +-- Image在texture基础上增加了一些数据 local Image = GameLab.GlobalClass("GameLab.Engine.Rendering.Image") Image.Ctor = function(self, texture) diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/init.lua index 5469297..a5b277f 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/init.lua @@ -1,5 +1,4 @@ -local m = GameLab.Engine.Rendering or {} -GameLab.Engine.Rendering = m +local m = GameLab.Package("GameLab.Engine.Rendering") local import = GameLab.import(...) diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Resource/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Resource/init.lua index 4942131..2b7d0ef 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Resource/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Resource/init.lua @@ -1,5 +1,4 @@ -local m = GameLab.Engine.Resource or {} -GameLab.Engine.Resource = m +local m = GameLab.Package("GameLab.Engine.Resource") local import = GameLab.import(...) ---------------------------------------------------------------------------------- diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/init.lua index f6f46a4..fe1347c 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/init.lua @@ -1,5 +1,4 @@ -GameLab.Engine = GameLab.Engine or {} - +local engine = GameLab.Package("GameLab.Engine") local import = GameLab.import(...) -return GameLab.Engine \ No newline at end of file +return engine \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Entity.lua b/Data/DefaultContent/Libraries/GameLab/Entity.lua new file mode 100644 index 0000000..4da28f9 --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/Entity.lua @@ -0,0 +1,11 @@ +--https://stackoverflow.com/questions/27897714/whats-the-distinction-between-an-entity-and-a-game-object +-- 游戏中的实体 +local Entity = GameLab.GlobalClass("GameLab.Entity") + +Entity.Ctor = function(self) + self.m_Components = {} + +end + + +return Entity \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Enum.lua b/Data/DefaultContent/Libraries/GameLab/Enum.lua index 1db5e89..52c2beb 100644 --- a/Data/DefaultContent/Libraries/GameLab/Enum.lua +++ b/Data/DefaultContent/Libraries/GameLab/Enum.lua @@ -6,20 +6,21 @@ local unmodified = { __newindex = function(t, k, val) Debug.LogError("Enum is readonly. key=" .. k) end, + __index = function(t, k, val) Debug.LogError("Invalid key " .. k) end } local Enum = function(tb) - local enum = {} + local e = {} for i, v in ipairs(tb) do - enum[v] = i + e[v] = i end - setmetatable(enum, unmodified) - return enum + setmetatable(e, unmodified) + return e end GameLab.Enum = Enum -return Enum +return Enum \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Events/init.lua b/Data/DefaultContent/Libraries/GameLab/Events/init.lua index 2448676..f84dba6 100644 --- a/Data/DefaultContent/Libraries/GameLab/Events/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Events/init.lua @@ -1,9 +1,6 @@ -local Events = GameLab.Events or{} -GameLab.Events = Events - +local Events = GameLab.Package("GameLab.Events") local import = GameLab.import(...) import("Event") - return Events \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua b/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua index bc3b451..b34a957 100644 --- a/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua +++ b/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua @@ -1,20 +1,20 @@ -local Enum = GameLab.Enum or require("GameLab.Enum") +local enum = GameLab.Enum or require("GameLab.Enum") --- 声明类的同时添加到G表 -local GlobalEnum = function(enumName, tb) - local enum = Enum(tb) +local genum = function(name, tb) + local e = enum(tb) - local shortName = string.match(enumName, "%.*(%w+)$") + local short = string.match(name, "%.*(%w+)$") + local pkgs = string.gmatch(name, "%.*(%w+)%.") local t = _G - for pkg in string.gmatch(enumName, "%.*(%w+)%.") do + for pkg in pkgs do t[pkg] = t[pkg] or {} t = t[pkg] end - t[shortName] = enum + t[short] = e - return enum + return e end -GameLab.GlobalEnum = GlobalEnum +GameLab.GlobalEnum = genum -return GlobalEnum \ No newline at end of file +return genum \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua b/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua index 10e3811..4e6e1fb 100644 --- a/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua +++ b/Data/DefaultContent/Libraries/GameLab/GlobalTable.lua @@ -1,13 +1,13 @@ -local GlobalTable = function(tbName) +local GlobalTable = function(name) local tb = {} - local shortName = string.match(tbName, "%.*(%w+)$") + local short = string.match(name, "%.*(%w+)$") local t = _G - for pkg in string.gmatch(tbName, "%.*(%w+)%.") do + for pkg in string.gmatch(name, "%.*(%w+)%.") do t[pkg] = t[pkg] or {} t = t[pkg] end - t[shortName] = tb + t[short] = tb return tb end diff --git a/Data/DefaultContent/Libraries/GameLab/Node.lua b/Data/DefaultContent/Libraries/GameLab/Node.lua deleted file mode 100644 index c5d43e9..0000000 --- a/Data/DefaultContent/Libraries/GameLab/Node.lua +++ /dev/null @@ -1,7 +0,0 @@ ---https://stackoverflow.com/questions/27897714/whats-the-distinction-between-an-entity-and-a-game-object --- 游戏中的实体 -local Node = GameLab.GlobalClass("GameLab.Node") - - - -return Node \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Package.lua b/Data/DefaultContent/Libraries/GameLab/Package.lua new file mode 100644 index 0000000..5eba68b --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/Package.lua @@ -0,0 +1,13 @@ +local package = function (name) + local t = _G + local pkgs = string.gmatch(name, "%.*(%w+)%.*") + for pkg in pkgs do + t[pkg] = t[pkg] or {} + t = t[pkg] + end + return t +end + +GameLab.Package = package + +return package \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Utils/init.lua b/Data/DefaultContent/Libraries/GameLab/Utils/init.lua index 0ca5131..51f6938 100644 --- a/Data/DefaultContent/Libraries/GameLab/Utils/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Utils/init.lua @@ -1,4 +1,3 @@ -local utils = GameLab.Utils or {} -GameLab.Utils = utils +local utils = GameLab.Package("GameLab.Utils") return uitls \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/init.lua b/Data/DefaultContent/Libraries/GameLab/init.lua index df0e19a..1c86c3d 100644 --- a/Data/DefaultContent/Libraries/GameLab/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/init.lua @@ -22,13 +22,12 @@ GameLab.find = function(fullName) return require(fullName) end --- classes -GameLab.Class = require("GameLab.Class") +GameLab.Package = require("GameLab.Package") +GameLab.Class = require("GameLab.Class") GameLab.GlobalClass = require("GameLab.GlobalClass") - -GameLab.Enum = require("GameLab.Enum") -GameLab.GlobalEnum = require("GameLab.GlobalEnum") - +GameLab.Enum = require("GameLab.Enum") +GameLab.GlobalEnum = require("GameLab.GlobalEnum") GameLab.GlobalTable = require("GameLab.GlobalTable") +GameLab.Delegate = require("GameLab.Delegate") return GameLab \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/strict.lua b/Data/DefaultContent/Libraries/strict.lua new file mode 100644 index 0000000..6f67fc0 --- /dev/null +++ b/Data/DefaultContent/Libraries/strict.lua @@ -0,0 +1,30 @@ +local mt = getmetatable(_G) +if mt == nil then + mt = {} + setmetatable(_G, mt) +end + +__STRICT = true +mt.__declared = {} + +mt.__newindex = function (t, n, v) + if __STRICT and not mt.__declared[n] then + local w = debug.getinfo(2, "S").what + if w ~= "main" and w ~= "C" then + error("assign to undeclared variable '"..n.."'", 2) + end + mt.__declared[n] = true + end + rawset(t, n, v) +end + +mt.__index = function (t, n) + if not mt.__declared[n] and debug.getinfo(2, "S").what ~= "C" then + error("variable '"..n.."' is not declared", 2) + end + return rawget(t, n) +end + +function global(...) + for _, v in ipairs{...} do mt.__declared[v] = true end +end \ No newline at end of file diff --git a/Data/Libraries/GameLab/Editor/EditorWindow.lua b/Data/Libraries/GameLab/Editor/EditorWindow.lua index 94a7464..e9df099 100644 --- a/Data/Libraries/GameLab/Editor/EditorWindow.lua +++ b/Data/Libraries/GameLab/Editor/EditorWindow.lua @@ -1,15 +1,12 @@ -local EditorWindowManager = require("EditorGUI.EditorWindowManager") +local delegate = require("GameLab.Delegate") --- EditorWindow是应用级别的逻辑窗口 --- ContainerWindow --- |- SplitWindow --- |- GUIWindow --- |- EditorWindow local EditorWindow = GameLab.GlobalClass("GameLab.Editor.EditorWindow") EditorWindow.Ctor = function(self, title) self.title = title -- 编辑器名称 - self.guiWindow = nil -- 绑定的GUIWindow + self.guiWindow = nil -- 绑定的GUIWindow + + self.onUpdate = delegate() end EditorWindow.OnGUI = function(self) diff --git a/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua b/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua index 4b6f1bc..4852b16 100644 --- a/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua @@ -40,7 +40,7 @@ ContainerWindow.OnSizeChanged = function(self) return end local pos = self:GetSize() - local position = Rect.New() + local position = Rect() position.x = 0 position.y = 0 position.width = pos.x diff --git a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua index bbd368e..6e15c9d 100644 --- a/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/GUIWindow.lua @@ -37,7 +37,7 @@ 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) -- 在父ContainerWindow中的位置和大小 + self.m_Position = Rect(0,0,0,0) -- 在父ContainerWindow中的位置和大小 self.m_EditorWindows = {} -- 编辑器脚本 i = i + 1 @@ -50,7 +50,7 @@ GUIWindow.SetContainerWindow = function(self, containerWindow) end GUIWindow.AddEditorWindow = function(self) - + end GUIWindow.SetPosition = function(self, pos) diff --git a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua index 9a398c2..1419d34 100644 --- a/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua +++ b/Data/Libraries/GameLab/Editor/Window/SplitWindow.lua @@ -26,7 +26,9 @@ local SplitState = { } -- 抽象的窗口,用来处理布局 -local SplitWindow = GameLab.GlobalClass("GameLab.Editor.Window.SplitWindow", function(self, mode, splitter) +local SplitWindow = GameLab.GlobalClass("GameLab.Editor.Window.SplitWindow") + +SplitWindow.Ctor = function(self, mode, splitter) self.m_ControlID = nil self.m_ContainerWindow = nil self.m_SplitMode = mode @@ -40,7 +42,7 @@ local SplitWindow = GameLab.GlobalClass("GameLab.Editor.Window.SplitWindow", fun table.insert(self.m_Splitter, sp) end end -end) +end -- 布局,设置GUIWindow的大小 SplitWindow.DoSplit = function(self, event) @@ -51,7 +53,7 @@ SplitWindow.DoSplit = function(self, event) self.m_ControlID = GUI.GetControlID() if event.type == EEventType.MouseDown then - for i, sp in ipairs(self.m_Splitter) do + for _, sp in ipairs(self.m_Splitter) do local rect = Rect() if self.m_SplitMode == ESplitMode.Horizontal then local x = sp.value * self.m_Position.width + self.m_Position.x - sp.size / 2 diff --git a/Data/Libraries/GameLab/Editor/Window/init.lua b/Data/Libraries/GameLab/Editor/Window/init.lua index 430e8f9..6d526e9 100644 --- a/Data/Libraries/GameLab/Editor/Window/init.lua +++ b/Data/Libraries/GameLab/Editor/Window/init.lua @@ -1,6 +1,4 @@ -GameLab.Editor.Window = GameLab.Editor.Window or {} -local m = GameLab.Editor.Window - +local m = GameLab.Package("GameLab.Editor.Window") local import = GameLab.import(...) import("ContainerWindow") diff --git a/Data/Libraries/GameLab/Editor/init.lua b/Data/Libraries/GameLab/Editor/init.lua index c151aab..8ddf079 100644 --- a/Data/Libraries/GameLab/Editor/init.lua +++ b/Data/Libraries/GameLab/Editor/init.lua @@ -1,6 +1,4 @@ -local m = GameLab.Editor or {} -GameLab.Editor = m - +local m = GameLab.Package("GameLab.Editor") local import = GameLab.import(...) m.AssetManager = import("AssetManager") diff --git a/Data/Scripts/Editor/AssetBrowser.lua b/Data/Scripts/Editor/AssetBrowser.lua index 6d02579..866eb62 100644 --- a/Data/Scripts/Editor/AssetBrowser.lua +++ b/Data/Scripts/Editor/AssetBrowser.lua @@ -27,7 +27,7 @@ AssetBrowser.OnGUI = function(self) shader = Engine.Rendering.Shader.CreateFromFile("./Resources/Shaders/Editor-Text.glsl") end - local ortho = Matrix44.New() + local ortho = Matrix44() ortho:SetOrtho(0, 400, 400, 0, 0.1, 10) Debug.Log("AssetBrowser.OnGUI()") diff --git a/Data/Scripts/EditorApplication.lua b/Data/Scripts/EditorApplication.lua index c8d3d99..5614e2a 100644 --- a/Data/Scripts/EditorApplication.lua +++ b/Data/Scripts/EditorApplication.lua @@ -10,6 +10,7 @@ local Rendering = GameLab.Engine.Rendering local Debug = GameLab.Debug local Window = GameLab.Editor.Window local GL = GameLab.Engine.GL +local delegate = GameLab.Delegate local app = GameLab.Editor.EditorApplication.New() @@ -34,9 +35,9 @@ EditorWindowManager.TestGUIWindow() -- guiWindow2:SetContainerWindow(mainWindow) -- guiWindow2:SetPosition({400,0, 400, 400}) -local v = GameLab.Engine.Math.Vector4.New(1,2,3,4) +local v = GameLab.Engine.Math.Vector4(1,2,3,4) -local c = Engine.Rendering.Color.New(1,1,1,1) +local c = Engine.Rendering.Color(1,1,1,1) GL.ClearColor({1,1,1,1}) GL.Clear(GL.EBufferType.ColorBuffer) @@ -62,6 +63,8 @@ local request = Engine.Resource.LoadImageDataAsync("./Resources/Images/brickwall local font = Engine.GUI.Font.New("./Resources/Font/msyh.ttc", {512, 512}, 5, 5) _G["default_font"] = font +local v = GameLab.Engine.Math.Vector2(10.002, 2.334) + while true do app:OnStep() diff --git a/Data/Scripts/EditorGUI/EditorWindowManager.lua b/Data/Scripts/EditorGUI/EditorWindowManager.lua index 56083df..c28379a 100644 --- a/Data/Scripts/EditorGUI/EditorWindowManager.lua +++ b/Data/Scripts/EditorGUI/EditorWindowManager.lua @@ -65,7 +65,7 @@ EditorWindowManager.TestGUIWindow = function() guiWindow3.m_SplitWindow = splitWnd2 local mainWindowSize = EditorWindowManager.mainWindow:GetSize() - local position = Rect.New() + local position = Rect() position.x = 0 position.y = 0 position.width = mainWindowSize.x diff --git a/Data/boot.lua b/Data/boot.lua index f6eeea9..091aff0 100644 --- a/Data/boot.lua +++ b/Data/boot.lua @@ -36,7 +36,7 @@ require "GameLab.Editor" require "GameLab.Editor.Window" -- debugging -require("LuaPanda").start("127.0.0.1",8818) +--require("LuaPanda").start("127.0.0.1",8818) -- launch editor dofile("./Scripts/EditorApplication.lua") -- cgit v1.1-26-g67d0