GE Lua Documentation

Press F to search!

pickSpawnPoint

Definition


-- @/lua/ge/spawn.lua:804
local function pickSpawnPoint(spawnName)
  local playerSP,spawnPointName
  local defaultSpawnPoint = setSpawnpoint.loadDefaultSpawnpoint()
  local spawnDefaultGroups = {"CameraSpawnPoints", "PlayerSpawnPoints", "PlayerDropPoints"}
  if defaultSpawnPoint then
    local spawnPoint = scenetree.findObject(defaultSpawnPoint)
    if spawnPoint then
      return spawnPoint
    else
      log('W', logTag, 'No SpawnPointName in mission file vehicle spawn in the default position')
    end
  end
  --Walk through the groups until we find a valid object
  for i,v in pairs(spawnDefaultGroups) do
    if scenetree.findObject(spawnDefaultGroups[i]) then
      local spawngroupPoint = scenetree.findObject(spawnDefaultGroups[i]):getRandom()
      if not spawngroupPoint then
        break
      end
      local sgPpointID = scenetree.findObjectById(spawngroupPoint:getId())
      if not sgPpointID then
        break
      end
      return sgPpointID
    end
  end

  --[[ ensuring backward compability with mods
  ]]
  local dps = scenetree.findObject("DefaultPlayerSpawnSphere")
  if dps then
    return scenetree.findObjectById(dps.obj:getId())
  end

  --[[Didn't find a spawn point by looking for the groups so let's return the
   "default" SpawnSphere First create it if it doesn't already exist
  ]]
  playerSP = createObject('SpawnSphere')
  if not playerSP then
    log('E', logTag, 'could not create playerSP')
    return
  end
  playerSP.dataBlock = scenetree.findObject('SpawnSphereMarker')
  if spawnName == "player" then
    playerSP.spawnClass = "BeamNGVehicle"
    playerSP.spawnDatablock = "default_vehicle"
    spawnPointName = "DefaultPlayerSpawnSphere"
    playerSP:registerObject(spawnPointName)
  elseif spawnName == 'camera' then
    playerSP.spawnClass = "Camera"
    playerSP.spawnDatablock = "Observer"
    spawnPointName = "DefaultCameraSpawnSphere"
    playerSP:registerObject(spawnPointName)
  end
  local missionCleanup = scenetree.MissionCleanup
  if not missionCleanup then
    log('E', logTag, 'MissionCleanup does not exist')
    return
  end
  --[[ Add it to the MissionCleanup group so that it doesn't get saved
    to the Mission (and gets cleaned up of course)
  ]]
  missionCleanup:addObject(playerSP.obj)
  return playerSP
end

Callers

@/lua/ge/extensions/core/levels.lua

    local spawnPoint = spawn.pickSpawnPoint('player')
    --local spawnPoint = setSpawnpoint.loadDefaultSpawnpoint()
@/lua/ge/spawn.lua
  local spawnClass, spawnDatablock, spawnProperties, spawnScript, player
  local spawnPoint = pickSpawnPoint('player')