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 +++++++++++++++++ 27 files changed, 158 insertions(+), 84 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/DefaultContent/Libraries') 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 -- cgit v1.1-26-g67d0