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