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