150 lines
		
	
	
		
			No EOL
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			No EOL
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
module 'shared/debug'
 | 
						|
module 'shared/resource'
 | 
						|
 | 
						|
if not rawget(_G, "lib") then include(Bridge.ZoneName, 'init') end
 | 
						|
 | 
						|
Version = resource.version(Bridge.ZoneName)
 | 
						|
Bridge.Debug('Zone', Bridge.ZoneName, Version)
 | 
						|
 | 
						|
Zone.PolyZone = function(data)
 | 
						|
    ---@cast data table
 | 
						|
    local zone = lib.zones.poly({
 | 
						|
        debug = data.debug,
 | 
						|
        points = data.points,
 | 
						|
        thickness = data.height
 | 
						|
    })
 | 
						|
 | 
						|
    data.id = zone.id
 | 
						|
 | 
						|
    data.coords = function()
 | 
						|
        return zone.coords
 | 
						|
    end
 | 
						|
 | 
						|
    data.distance = function()
 | 
						|
        return zone.distance
 | 
						|
    end
 | 
						|
 | 
						|
    data.remove = function()
 | 
						|
        zone:remove()
 | 
						|
    end
 | 
						|
 | 
						|
    data.contains = function(coord)
 | 
						|
        return zone:contains(coord)
 | 
						|
    end
 | 
						|
 | 
						|
    if data.onEnter then
 | 
						|
        zone.onEnter = function()
 | 
						|
            data.onEnter(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    if data.onExit then
 | 
						|
        zone.onExit = function()
 | 
						|
            data.onExit(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    if data.inside then
 | 
						|
        zone.inside = function()
 | 
						|
            data.inside(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    
 | 
						|
    return data
 | 
						|
end
 | 
						|
 | 
						|
Zone.BoxZone = function(data)
 | 
						|
    ---@cast data table
 | 
						|
    local zone = lib.zones.box({
 | 
						|
        debug = data.debug,
 | 
						|
        coords = data.coords,
 | 
						|
        size = data.size,
 | 
						|
        rotation = data.rotation
 | 
						|
    })
 | 
						|
 | 
						|
    data.id = zone.id
 | 
						|
 | 
						|
    data.coords = function()
 | 
						|
        return zone.coords
 | 
						|
    end
 | 
						|
 | 
						|
    data.distance = function()
 | 
						|
        return zone.distance
 | 
						|
    end
 | 
						|
 | 
						|
    data.remove = function()
 | 
						|
        zone:remove()
 | 
						|
    end
 | 
						|
 | 
						|
    data.contains = function(coord)
 | 
						|
        return zone:contains(coord)
 | 
						|
    end
 | 
						|
 | 
						|
    if data.onEnter then
 | 
						|
        zone.onEnter = function()
 | 
						|
            data.onEnter(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    if data.onExit then
 | 
						|
        zone.onExit = function()
 | 
						|
            data.onExit(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    if data.inside then
 | 
						|
        zone.inside = function()
 | 
						|
            data.inside(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
    
 | 
						|
    ---@cast data table
 | 
						|
    return data
 | 
						|
end
 | 
						|
 | 
						|
Zone.SphereZone = function(data)
 | 
						|
    ---@cast data table
 | 
						|
    local zone = lib.zones.sphere({
 | 
						|
        debug = data.debug,
 | 
						|
        coords = data.coords,
 | 
						|
        radius = data.radius
 | 
						|
    })
 | 
						|
 | 
						|
    data.id = zone.id
 | 
						|
 | 
						|
    data.coords = function()
 | 
						|
        return zone.coords
 | 
						|
    end
 | 
						|
 | 
						|
    data.distance = function()
 | 
						|
        return zone.distance
 | 
						|
    end
 | 
						|
 | 
						|
    data.remove = function()
 | 
						|
        zone:remove()
 | 
						|
    end
 | 
						|
 | 
						|
    data.contains = function(coord)
 | 
						|
        return zone:contains(coord)
 | 
						|
    end
 | 
						|
 | 
						|
    if data.onEnter then
 | 
						|
        zone.onEnter = function()
 | 
						|
            data.onEnter(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    if data.onExit then
 | 
						|
        zone.onExit = function()
 | 
						|
            data.onExit(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    if data.inside then
 | 
						|
        zone.inside = function()
 | 
						|
            data.inside(data)
 | 
						|
        end
 | 
						|
    end
 | 
						|
 | 
						|
    return data
 | 
						|
end |