checkRoadblock
Definition
-- @/lua/ge/extensions/gameplay/police.lua:27
local function checkRoadblock(vehIds, rbWidth, useLength) -- checks how many of the input vehicles can fit in a roadblock
-- useLength can be nil
if type(vehIds) ~= 'table' then return end
rbWidth = rbWidth or 10 -- maximum roadblock width
local validVehIds = {}
local temp = {}
local totalLength = 0
for _, id in ipairs(vehIds) do
local veh = getObjectByID(id)
if veh then
local length
if useLength == nil then
length = max(veh.initialNodePosBB:getExtents().x, veh.initialNodePosBB:getExtents().y) -- automatically uses best axis
else
length = useLength and veh.initialNodePosBB:getExtents().y or veh.initialNodePosBB:getExtents().x
end
table.insert(temp, {id, length})
end
table.sort(temp, function(a, b) return a[2] < b[2] end) -- smallest to largest length
end
for _, v in ipairs(temp) do
rbWidth = rbWidth - v[2]
if rbWidth < 0 then break end
totalLength = totalLength + v[2]
table.insert(validVehIds, v[1])
end
return validVehIds, totalLength
end
Callers
@/lua/ge/extensions/gameplay/police.lua
local rbWidth = math.min(mapNodes[spawnData.n1].radius, mapNodes[spawnData.n2].radius) * 2 + 1 -- road width, plus a small margin
local newVehIds, totalLength = checkRoadblock(vehIds, rbWidth) -- returns vehicles that can fit in the roadblock
local maxPropLength = 0
newPropIds = checkRoadblock(policePropIds, rbWidth, false)
for _, pid in ipairs(newPropIds) do