mirror of
https://github.com/appgurueu/modlib.git
synced 2024-11-25 16:53:46 +01:00
Class modules: Monkey-patch metatables
This commit is contained in:
parent
7253e2837a
commit
2825dc60aa
22
b3d.lua
22
b3d.lua
@ -1,4 +1,7 @@
|
||||
local metatable = {__index = getfenv(1)}
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
--! experimental
|
||||
--+ Reads a single BB3D chunk from a stream
|
||||
@ -195,12 +198,17 @@ function read(stream)
|
||||
flags = flags
|
||||
}
|
||||
while content() do
|
||||
table.insert(bone, {
|
||||
frame = int(),
|
||||
position = position and vector3() or nil,
|
||||
scale = scale and vector3() or nil,
|
||||
rotation = rotation and quaternion() or nil
|
||||
})
|
||||
local frame = {frame = int()}
|
||||
if position then
|
||||
frame.position = vector3()
|
||||
end
|
||||
if scale then
|
||||
frame.scale = vector3()
|
||||
end
|
||||
if rotation then
|
||||
frame.rotation = quaternion()
|
||||
end
|
||||
table.insert(bone, frame)
|
||||
end
|
||||
-- Ensure frames are sorted ascending
|
||||
table.sort(bone, function(a, b) return a.frame < b.frame end)
|
||||
|
@ -1,4 +1,7 @@
|
||||
local metatable = {__index = getfenv(1)}
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
distance = modlib.vector.distance
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = class}
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
comparator = modlib.table.default_comparator
|
||||
|
||||
|
@ -1,8 +1,11 @@
|
||||
local schema = getfenv(1)
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
function new(def)
|
||||
-- TODO type inference, sanity checking etc.
|
||||
return setmetatable(def, {__index = schema})
|
||||
return setmetatable(def, metatable)
|
||||
end
|
||||
|
||||
local function field_name_to_title(name)
|
||||
|
7
trie.lua
7
trie.lua
@ -1,6 +1,9 @@
|
||||
local trie = getfenv(1)
|
||||
local class = getfenv(1)
|
||||
local metatable = {__index = function(_self, key)
|
||||
return rawget(class, key)
|
||||
end}
|
||||
|
||||
function new(table) return setmetatable(table or {}, trie) end
|
||||
function new(table) return setmetatable(table or {}, metatable) end
|
||||
|
||||
function insert(self, word, value, overwrite)
|
||||
for i = 1, word:len() do
|
||||
|
@ -1,5 +1,5 @@
|
||||
local mt_vector = vector
|
||||
local vector = getfenv(1)
|
||||
local class = getfenv(1)
|
||||
|
||||
index_aliases = {
|
||||
x = 1,
|
||||
@ -16,7 +16,7 @@ metatable = {
|
||||
if index ~= nil then
|
||||
return table[index]
|
||||
end
|
||||
return vector[key]
|
||||
return rawget(class, key)
|
||||
end,
|
||||
__newindex = function(table, key, value)
|
||||
local index = letters[key]
|
||||
|
Loading…
Reference in New Issue
Block a user