97 lines
2.6 KiB
Lua
97 lines
2.6 KiB
Lua
local clrLuaUserData = LuaUserData
|
|
local luaUserData = {}
|
|
|
|
luaUserData.Descriptors = {}
|
|
|
|
LuaSetup.LuaUserData = luaUserData
|
|
|
|
luaUserData.IsRegistered = clrLuaUserData.IsRegistered
|
|
luaUserData.UnregisterType = clrLuaUserData.UnregisterType
|
|
luaUserData.RegisterGenericType = clrLuaUserData.RegisterGenericType
|
|
luaUserData.RegisterExtensionType = clrLuaUserData.RegisterExtensionType
|
|
luaUserData.UnregisterGenericType = clrLuaUserData.UnregisterGenericType
|
|
luaUserData.IsTargetType = clrLuaUserData.IsTargetType
|
|
luaUserData.TypeOf = clrLuaUserData.TypeOf
|
|
luaUserData.GetType = clrLuaUserData.GetType
|
|
luaUserData.CreateEnumTable = clrLuaUserData.CreateEnumTable
|
|
luaUserData.MakeFieldAccessible = clrLuaUserData.MakeFieldAccessible
|
|
luaUserData.MakeMethodAccessible = clrLuaUserData.MakeMethodAccessible
|
|
luaUserData.MakePropertyAccessible = clrLuaUserData.MakePropertyAccessible
|
|
luaUserData.AddMethod = clrLuaUserData.AddMethod
|
|
luaUserData.AddField = clrLuaUserData.AddField
|
|
luaUserData.RemoveMember = clrLuaUserData.RemoveMember
|
|
luaUserData.CreateUserDataFromDescriptor = clrLuaUserData.CreateUserDataFromDescriptor
|
|
luaUserData.CreateUserDataFromType = clrLuaUserData.CreateUserDataFromType
|
|
luaUserData.HasMember = clrLuaUserData.HasMember
|
|
|
|
luaUserData.RegisterType = function(typeName)
|
|
local success, result = pcall(clrLuaUserData.RegisterType, typeName)
|
|
|
|
if not success then
|
|
error(result, 2)
|
|
end
|
|
|
|
luaUserData.Descriptors[typeName] = result
|
|
|
|
return result
|
|
end
|
|
|
|
luaUserData.RegisterTypeBarotrauma = function(typeName)
|
|
typeName = "Barotrauma." .. typeName
|
|
local success, result = pcall(luaUserData.RegisterType, typeName)
|
|
|
|
if not success then
|
|
error(result, 2)
|
|
end
|
|
|
|
return result
|
|
end
|
|
|
|
luaUserData.AddCallMetaTable = function (userdata)
|
|
if userdata == nil then
|
|
error("Attempted to add a call metatable to a nil value.", 2)
|
|
end
|
|
|
|
if not LuaUserData.HasMember(userdata, ".ctor") then
|
|
error("Attempted to add a call metatable to a userdata that does not have a constructor.", 2)
|
|
end
|
|
|
|
debug.setmetatable(userdata, {
|
|
__call = function(obj, ...)
|
|
if userdata == nil then
|
|
error("userdata was nil.", 2)
|
|
end
|
|
|
|
local success, result = pcall(userdata.__new, ...)
|
|
|
|
|
|
if not success then
|
|
error(result, 2)
|
|
end
|
|
|
|
return result
|
|
end
|
|
})
|
|
end
|
|
|
|
luaUserData.CreateStatic = function(typeName)
|
|
if type(typeName) ~= "string" then
|
|
error("Expected a string for typeName, got " .. type(typeName) .. ".", 2)
|
|
end
|
|
|
|
local success, result = pcall(clrLuaUserData.CreateStatic, typeName)
|
|
|
|
if not success then
|
|
error(result, 2)
|
|
end
|
|
|
|
if result == nil then
|
|
return
|
|
end
|
|
|
|
if LuaUserData.HasMember(result, ".ctor") then
|
|
luaUserData.AddCallMetaTable(result)
|
|
end
|
|
|
|
return result
|
|
end |