From 138d3f4d3d6e2aaf5ba34f89af15ef85ea074357 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 8 Nov 2021 09:23:38 +0800 Subject: *misc --- .../Libraries/GameLab/Engine/Math/Matrix33.lua | 2 +- .../Libraries/GameLab/Engine/Math/Matrix44.lua | 2 +- .../Libraries/GameLab/Engine/Math/Rect.lua | 9 ++++++++- .../Libraries/GameLab/Engine/Math/Vector2.lua | 2 +- .../Libraries/GameLab/Engine/Math/Vector3.lua | 2 +- .../Libraries/GameLab/Engine/Math/Vector4.lua | 2 +- .../Libraries/GameLab/Engine/Math/init.lua | 13 +++++++------ .../Libraries/GameLab/Engine/Rendering/Color.lua | 2 +- .../Libraries/GameLab/Engine/Rendering/Color32.lua | 2 +- .../Libraries/GameLab/Engine/Rendering/Image.lua | 2 +- .../GameLab/Engine/Rendering/Material.lua | 2 +- .../GameLab/Engine/Resource/ImageDataRequest.lua | 2 +- Data/DefaultContent/Libraries/GameLab/Entity.lua | 6 ------ Data/DefaultContent/Libraries/GameLab/Enum.lua | 22 +++++++++++++++++++--- .../Libraries/GameLab/GlobalClass.lua | 20 ++++++++++++++++++++ .../Libraries/GameLab/GlobalEnum.lua | 20 ++++++++++++++++++++ .../Libraries/GameLab/InternalClass.lua | 12 ------------ Data/DefaultContent/Libraries/GameLab/Node.lua | 7 +++++++ Data/DefaultContent/Libraries/GameLab/Object.lua | 5 ----- Data/DefaultContent/Libraries/GameLab/init.lua | 15 +++------------ 20 files changed, 94 insertions(+), 55 deletions(-) delete mode 100644 Data/DefaultContent/Libraries/GameLab/Entity.lua create mode 100644 Data/DefaultContent/Libraries/GameLab/GlobalClass.lua create mode 100644 Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua delete mode 100644 Data/DefaultContent/Libraries/GameLab/InternalClass.lua create mode 100644 Data/DefaultContent/Libraries/GameLab/Node.lua delete mode 100644 Data/DefaultContent/Libraries/GameLab/Object.lua (limited to 'Data/DefaultContent') diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix33.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix33.lua index 8cb7e72..ec263d0 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix33.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix33.lua @@ -1,4 +1,4 @@ -local Matrix33 = GameLab.Class("GameLab.Engine.Math.Matrix33") +local Matrix33 = GameLab.GlobalClass("GameLab.Engine.Math.Matrix33") Matrix33.Ctor = function(self) diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix44.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix44.lua index 2347207..9386daf 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix44.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Matrix44.lua @@ -1,4 +1,4 @@ -local Matrix44 = GameLab.Class("GameLab.Engine.Math.Matrix44") +local Matrix44 = GameLab.GlobalClass("GameLab.Engine.Math.Matrix44") Matrix44.Ctor = function(self) for r = 0, 3 do diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua index 2aeb0f7..f603ed5 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua @@ -1,4 +1,4 @@ -local Rect = GameLab.Class("GameLab.Engine.Math.Rect") +local Rect = GameLab.GlobalClass("GameLab.Engine.Math.Rect") Rect.Ctor = function(self, x, y, width, height) self.x = x or 0 @@ -7,4 +7,11 @@ Rect.Ctor = function(self, x, y, width, height) self.height = height or 0 end +Rect.Set = function(self, rect) + self.x = rect.x or rect[1] + self.y = rect.y or rect[2] + self.z = rect.z or rect[3] + self.w = rect.w or rect[4] +end + return Rect \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua index 822537f..9a0e0a3 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua @@ -1,4 +1,4 @@ -local Vector2 = GameLab.Class("GameLab.Engine.Math.Vector2") +local Vector2 = GameLab.GlobalClass("GameLab.Engine.Math.Vector2") Vector2.Ctor = function(self, x, y) self.x = x or 0 diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua index e383bf0..8203b1f 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua @@ -1,4 +1,4 @@ -local Vector3 = GameLab.Class("GameLab.Engine.Math.Vector3") +local Vector3 = GameLab.GlobalClass("GameLab.Engine.Math.Vector3") Vector3.Ctor = function(self, x, y, z) self.x = x or 0 diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua index e232c93..3655184 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua @@ -1,4 +1,4 @@ -local Vector4 = GameLab.Class("GameLab.Engine.Math.Vector4") +local Vector4 = GameLab.GlobalClass("GameLab.Engine.Math.Vector4") Vector4.Ctor = function (self, x, y, z, w) self.x = x or 0 diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua index eb75db7..5131b07 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua @@ -4,12 +4,13 @@ GameLab.Engine.Math = m local import = GameLab.import(...) import("Math") -m.Vector2 = import("Vector2") -m.Vector3 = import("Vector3") -m.Vector4 = import("Vector4") -m.Matrix44 = import("Matrix44") -m.Matrix33 = import("Matrix33") -m.Quaternion = import("Quaternion") +import("Vector2") +import("Vector3") +import("Vector4") +import("Matrix44") +import("Matrix33") +import("Quaternion") +import("Rect") GameLab.Debug.Log("GameLab.Engine.Math loaded") diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua index bf908a4..2785bdf 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color.lua @@ -1,4 +1,4 @@ -local Color = GameLab.Class("GameLab.Engine.Rendering.Color") +local Color = GameLab.GlobalClass("GameLab.Engine.Rendering.Color") Color.Ctor = function(self, r, g, b, a) self.r = r diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua index d108dfb..48902b6 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Color32.lua @@ -1,4 +1,4 @@ -local Color32 = GameLab.Class("GameLab.Engine.Rendering.Color32") +local Color32 = GameLab.GlobalClass("GameLab.Engine.Rendering.Color32") Color32.Ctor = function(self, r, g, b, a) self.r = r diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua index b209425..5ef75e5 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua @@ -1,5 +1,5 @@ -- Image在texture基础上增加了一些元数据 -local Image = GameLab.Class("GameLab.Engine.Rendering.Image") +local Image = GameLab.GlobalClass("GameLab.Engine.Rendering.Image") Image.Ctor = function(self, texture) self.texture = texture -- "atlas" diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Material.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Material.lua index 872d7e1..7993f33 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Material.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Material.lua @@ -1,4 +1,4 @@ -local Material = GameLab.Class("GameLab.Engine.Rendering.Material") +local Material = GameLab.GlobalClass("GameLab.Engine.Rendering.Material") Material.Ctor = function(self) self.shader = nil -- 绑定的shader diff --git a/Data/DefaultContent/Libraries/GameLab/Engine/Resource/ImageDataRequest.lua b/Data/DefaultContent/Libraries/GameLab/Engine/Resource/ImageDataRequest.lua index f7d7bbe..c35d35a 100644 --- a/Data/DefaultContent/Libraries/GameLab/Engine/Resource/ImageDataRequest.lua +++ b/Data/DefaultContent/Libraries/GameLab/Engine/Resource/ImageDataRequest.lua @@ -1,4 +1,4 @@ -local ImageDataRequest = GameLab.Class("GameLab.Engine.Resource.ImageDataRequest") +local ImageDataRequest = GameLab.GlobalClass("GameLab.Engine.Resource.ImageDataRequest") ImageDataRequest.Ctor = function(self) self.isDone = false diff --git a/Data/DefaultContent/Libraries/GameLab/Entity.lua b/Data/DefaultContent/Libraries/GameLab/Entity.lua deleted file mode 100644 index 27769f3..0000000 --- a/Data/DefaultContent/Libraries/GameLab/Entity.lua +++ /dev/null @@ -1,6 +0,0 @@ --- 游戏中的实体 -local Entity = GameLab.Class("GameLab.Entity") - - - -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 d1a1ae0..1db5e89 100644 --- a/Data/DefaultContent/Libraries/GameLab/Enum.lua +++ b/Data/DefaultContent/Libraries/GameLab/Enum.lua @@ -1,9 +1,25 @@ -- Declare enum +local Debug = GameLab.Debug -local Enum = function() +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 +} -end +local Enum = function(tb) + local enum = {} + for i, v in ipairs(tb) do + enum[v] = i + end + setmetatable(enum, unmodified) + return enum +end +GameLab.Enum = Enum -GameLab.Enum = Enum \ No newline at end of file +return Enum diff --git a/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua b/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua new file mode 100644 index 0000000..dcb5fba --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/GlobalClass.lua @@ -0,0 +1,20 @@ +local Class = GameLab.Class or require("GameLab.Class") + +-- 声明类的同时添加到G表 +local GlobalClass = function(className) + local cls = Class(className) + + local shortName = string.match(className, "%.*(%w+)$") + local t = _G + for pkg in string.gmatch(className, "%.*(%w+)%.") do + t[pkg] = t[pkg] or {} + t = t[pkg] + end + t[shortName] = cls + + return cls +end + +GameLab.GlobalClass = GlobalClass + +return GlobalClass \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua b/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua new file mode 100644 index 0000000..4a160fa --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua @@ -0,0 +1,20 @@ +local Enum = GameLab.Enum or require("GameLab.Enum") + +-- 声明类的同时添加到G表 +local GlobalEnum = function(enumName) + local enum = Enum(enumName) + + local shortName = string.match(enumName, "%.*(%w+)$") + local t = _G + for pkg in string.gmatch(enumName, "%.*(%w+)%.") do + t[pkg] = t[pkg] or {} + t = t[pkg] + end + t[shortName] = enum + + return enum +end + +GameLab.GlobalEnum = GlobalEnum + +return GlobalEnum \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/InternalClass.lua b/Data/DefaultContent/Libraries/GameLab/InternalClass.lua deleted file mode 100644 index 36ad568..0000000 --- a/Data/DefaultContent/Libraries/GameLab/InternalClass.lua +++ /dev/null @@ -1,12 +0,0 @@ -local Class = GameLab.Class or require("GameLab.Class") - --- 声明类的同时添加到G表 -local InternalClass = function(className) - local cls = Class(className) - _G[className] = className - return cls -end - -GameLab.InternalClass = InternalClass - -return InternalClass \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/Node.lua b/Data/DefaultContent/Libraries/GameLab/Node.lua new file mode 100644 index 0000000..c5d43e9 --- /dev/null +++ b/Data/DefaultContent/Libraries/GameLab/Node.lua @@ -0,0 +1,7 @@ +--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/Object.lua b/Data/DefaultContent/Libraries/GameLab/Object.lua deleted file mode 100644 index 94d4154..0000000 --- a/Data/DefaultContent/Libraries/GameLab/Object.lua +++ /dev/null @@ -1,5 +0,0 @@ -local Object = GameLab.Class("GameLab.Object") - - - -return Object \ No newline at end of file diff --git a/Data/DefaultContent/Libraries/GameLab/init.lua b/Data/DefaultContent/Libraries/GameLab/init.lua index c87ace3..8f61b05 100644 --- a/Data/DefaultContent/Libraries/GameLab/init.lua +++ b/Data/DefaultContent/Libraries/GameLab/init.lua @@ -12,17 +12,6 @@ GameLab.import = function(packageName) return _import end --- 用于相对路径包含 --- GameLab.require = function(className) --- local packageName = (type(className) == "string") and string.match(className, "^(.+)%.%w+$") or "" --- local _require = function(path) --- local name = packageName .. "." .. path --- local m = require(name) --- return m --- end --- return _require --- end - GameLab.find = function(fullName) if _G[fullName] ~= nil then return _G[fullName] @@ -35,7 +24,9 @@ end -- classes GameLab.Class = require("GameLab.Class") +GameLab.GlobalClass = require("GameLab.GlobalClass") -GameLab.InternalClass = require("GameLab.InternalClass") +GameLab.Enum = require("GameLab.Enum") +GameLab.GlobalEnum = require("GameLab.GlobalEnum") return GameLab \ No newline at end of file -- cgit v1.1-26-g67d0