summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-11-15 03:10:34 +0800
committerchai <chaifix@163.com>2021-11-15 03:10:34 +0800
commit14fa5cd8b00cf10d53c829caa0d5f9b40a3d8d3f (patch)
tree24dc0e1b83f254427372b9c4628d12b313039ade
parent452eceb3ba4bdbbc77786dc7f7235c03f1c62302 (diff)
*rename
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Class.lua3
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Debug/init.lua3
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Delegate.lua38
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Animation/init.lua7
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/GL/init.lua5
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/GUI/IMGUI.lua1
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/GUI/init.lua4
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/Quaternion.lua2
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/Rect.lua4
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector2.lua10
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector3.lua2
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/Vector4.lua18
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Math/init.lua13
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Rendering/Image.lua2
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Rendering/init.lua3
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/Resource/init.lua3
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Engine/init.lua5
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Entity.lua (renamed from Data/DefaultContent/Libraries/GameLab/Node.lua)8
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Enum.lua11
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Events/init.lua5
-rw-r--r--Data/DefaultContent/Libraries/GameLab/GlobalEnum.lua20
-rw-r--r--Data/DefaultContent/Libraries/GameLab/GlobalTable.lua8
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Package.lua13
-rw-r--r--Data/DefaultContent/Libraries/GameLab/Utils/init.lua3
-rw-r--r--Data/DefaultContent/Libraries/GameLab/init.lua11
-rw-r--r--Data/DefaultContent/Libraries/strict.lua30
-rw-r--r--Data/Libraries/GameLab/Editor/EditorWindow.lua11
-rw-r--r--Data/Libraries/GameLab/Editor/Window/ContainerWindow.lua2
-rw-r--r--Data/Libraries/GameLab/Editor/Window/GUIWindow.lua4
-rw-r--r--Data/Libraries/GameLab/Editor/Window/SplitWindow.lua8
-rw-r--r--Data/Libraries/GameLab/Editor/Window/init.lua4
-rw-r--r--Data/Libraries/GameLab/Editor/init.lua4
-rw-r--r--Data/Scripts/Editor/AssetBrowser.lua2
-rw-r--r--Data/Scripts/EditorApplication.lua7
-rw-r--r--Data/Scripts/EditorGUI/EditorWindowManager.lua2
-rw-r--r--Data/boot.lua2
36 files changed, 175 insertions, 103 deletions
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/Node.lua b/Data/DefaultContent/Libraries/GameLab/Entity.lua
index c5d43e9..4da28f9 100644
--- a/Data/DefaultContent/Libraries/GameLab/Node.lua
+++ b/Data/DefaultContent/Libraries/GameLab/Entity.lua
@@ -1,7 +1,11 @@
--https://stackoverflow.com/questions/27897714/whats-the-distinction-between-an-entity-and-a-game-object
-- 游戏中的实体
-local Node = GameLab.GlobalClass("GameLab.Node")
+local Entity = GameLab.GlobalClass("GameLab.Entity")
+Entity.Ctor = function(self)
+ self.m_Components = {}
+end
-return Node \ No newline at end of file
+
+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/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")