findSafeSpawnPoint
Definition
-- @/lua/ge/extensions/gameplay/traffic/trafficUtils.lua:581
local function findSpawnPointActual(startPos, startDir, minDist, maxDist, targetDist, options) -- returns a spawn point, never nil; forces teleportation
-- priority: route ahead first, then nearby roads (radial), then far away roads (radial), then max distance
local spawnData, valid = findSpawnPointOnRoute(startPos, startDir, minDist, maxDist, targetDist, options)
if not valid then
-- some of this feels hacky; will look into this another time
spawnData, valid = findSpawnPointRadial(startPos, startDir, 200, 1000, 0, options) -- small radial search
if not valid then
options = options or {}
options.minDrivability = 0.5
spawnData, valid = findSpawnPointRadial(startPos, startDir, 200, 2000, 0, options) -- large radial search, more permissive options
if not valid then
spawnData, valid = findSpawnPointRadial(startPos, startDir, 10000, 10000, 0, options) -- temporary solution?
spawnData.pos.z = 1 -- above ground plane
end
end
end
return spawnData, valid
end
Callers
@/lua/ge/extensions/core/multiSpawn.lua
log('I', logTag, 'Multispawn mode is traffic, now finding an ideal spawn point...')
local spawnData = gameplay_traffic_trafficUtils.findSafeSpawnPoint(nil, nil, 0, 500, 0)
pos, rot = spawnData.pos, spawnData.dir
@/lua/ge/extensions/gameplay/traffic.lua
spawnData = gameplay_traffic_trafficUtils.findSafeSpawnPoint(spawnPointPos, spawnPointDirVec, minDist, maxDist, targetDist, params)
end
local spawnData = gameplay_traffic_trafficUtils.findSafeSpawnPoint(nil, nil, minDist, maxDist, targetDist)
local newPos, newRot = gameplay_traffic_trafficUtils.finalizeSpawnPoint(spawnData.pos, spawnData.dir, spawnData.n1, spawnData.n2, {legalDirection = true})