75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
if CSActive then
 | 
						|
    return
 | 
						|
end
 | 
						|
 | 
						|
local function IsAllowed(typeName)
 | 
						|
    if string.startsWith(typeName, "Barotrauma.Lua") or string.startsWith(typeName, "Barotrauma.Cs") or string.startsWith(typeName, "Barotrauma.LuaCs") then
 | 
						|
        return false
 | 
						|
    end
 | 
						|
 | 
						|
    if string.startsWith(typeName, "System.Collections") then return true end
 | 
						|
 | 
						|
    if string.startsWith(typeName, "Microsoft.Xna") then return true end
 | 
						|
 | 
						|
    if string.startsWith(typeName, "Barotrauma.IO") then return false end
 | 
						|
 | 
						|
    if string.startsWith(typeName, "Barotrauma.ToolBox") then return false end
 | 
						|
    if string.startsWith(typeName, "Barotrauma.SaveUtil") then return false end
 | 
						|
 | 
						|
    if string.startsWith(typeName, "Barotrauma.") then return true end
 | 
						|
 | 
						|
    return false
 | 
						|
end
 | 
						|
 | 
						|
local function CanBeReRegistered(typeName)
 | 
						|
    if string.startsWith(typeName, "Barotrauma.Lua") or string.startsWith(typeName, "Barotrauma.Cs") or string.startsWith(typeName, "Barotrauma.LuaCs") then
 | 
						|
        return false
 | 
						|
    end
 | 
						|
 | 
						|
    return true
 | 
						|
end
 | 
						|
 | 
						|
local originalRegisterType = LuaUserData.RegisterType
 | 
						|
LuaUserData.RegisterType = function (typeName)
 | 
						|
    if not (CanBeReRegistered(typeName) and LuaUserData.IsRegistered(typeName)) and not IsAllowed(typeName) then
 | 
						|
        error("Couldn't register type " .. typeName .. ".", 2)
 | 
						|
    end
 | 
						|
 | 
						|
    local success, result = pcall(originalRegisterType, typeName)
 | 
						|
 | 
						|
	if not success then
 | 
						|
		error(result, 2)
 | 
						|
	end
 | 
						|
 | 
						|
    return result
 | 
						|
end
 | 
						|
 | 
						|
local originalRegisterGenericType = LuaUserData.RegisterType
 | 
						|
LuaUserData.RegisterGenericType = function (typeName, ...)
 | 
						|
    if not (CanBeReRegistered(typeName) and LuaUserData.IsRegistered(typeName)) and not IsAllowed(typeName) then
 | 
						|
        error("Couldn't register generic type " .. typeName .. ".", 2)
 | 
						|
    end
 | 
						|
 | 
						|
    local success, result = pcall(originalRegisterGenericType, typeName, ...)
 | 
						|
 | 
						|
	if not success then
 | 
						|
		error(result, 2)
 | 
						|
	end
 | 
						|
 | 
						|
    return result
 | 
						|
end
 | 
						|
 | 
						|
local originalCreateStatic = LuaUserData.CreateStatic
 | 
						|
LuaUserData.CreateStatic = function (typeName, addCallMethod)
 | 
						|
    if not (CanBeReRegistered(typeName) and LuaUserData.IsRegistered(typeName)) and not IsAllowed(typeName) then
 | 
						|
        error("Couldn't create static type " .. typeName .. ".", 2)
 | 
						|
    end
 | 
						|
 | 
						|
    local success, result = pcall(originalCreateStatic, typeName, addCallMethod)
 | 
						|
 | 
						|
	if not success then
 | 
						|
		error(result, 2)
 | 
						|
	end
 | 
						|
 | 
						|
    return result
 | 
						|
end |