GE Lua Documentation

Press F to search!

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})