AddCallMetaTable for sub userdatas
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
local defaultLib = {}
|
||||
|
||||
local AddCallMetaTable = LuaSetup.AddCallMetaTable
|
||||
local CreateStatic = LuaSetup.CreateStatic
|
||||
local CreateEnum = LuaUserData.CreateEnumTable
|
||||
|
||||
@@ -45,6 +46,7 @@ defaultLib["CharacterPrefab"] = CreateStatic("Barotrauma.CharacterPrefab")
|
||||
defaultLib["CharacterInfo"] = CreateStatic("Barotrauma.CharacterInfo", true)
|
||||
defaultLib["CharacterInfoPrefab"] = CreateStatic("Barotrauma.CharacterInfoPrefab")
|
||||
defaultLib["Item"] = CreateStatic("Barotrauma.Item", true)
|
||||
AddCallMetaTable(defaultLib["Item"].ChangePropertyEventData)
|
||||
defaultLib["ItemPrefab"] = CreateStatic("Barotrauma.ItemPrefab", true)
|
||||
defaultLib["TalentTree"] = CreateStatic("Barotrauma.TalentTree", true)
|
||||
defaultLib["TalentPrefab"] = CreateStatic("Barotrauma.TalentPrefab", true)
|
||||
|
||||
@@ -10,21 +10,25 @@ LuaSetup.RegisterBarotrauma = function(typeName)
|
||||
return LuaSetup.Register("Barotrauma." .. typeName)
|
||||
end
|
||||
|
||||
LuaSetup.AddCallMetaTable = function (userdata)
|
||||
debug.setmetatable(userdata, {
|
||||
__call = function(obj, ...)
|
||||
local success, result = pcall(userdata.__new, ...)
|
||||
|
||||
if not success then
|
||||
error(result, 2)
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
LuaSetup.CreateStatic = function(typeName, addCallMethod)
|
||||
local staticUserdata = LuaUserData.CreateStatic(typeName)
|
||||
|
||||
if addCallMethod then
|
||||
debug.setmetatable(staticUserdata, {
|
||||
__call = function(obj, ...)
|
||||
local success, result = pcall(staticUserdata.__new, ...)
|
||||
|
||||
if not success then
|
||||
error(result, 2)
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
})
|
||||
LuaSetup.AddCallMetaTable(staticUserdata)
|
||||
end
|
||||
|
||||
return staticUserdata
|
||||
|
||||
Reference in New Issue
Block a user