GE Lua Documentation

Press F to search!

safeTeleport

Definition


-- @/lua/ge/spawn.lua:616

-- TODO move all the options into one table
-- TODO have separate options for "checkIntersectionTraffic", "checkIntersectionVehicles", "checkIntersectionStatic"
local function safeTeleport(veh, pos, rot, checkOnlyStatics_, visibilityPoint_, removeTraffic_, centeredPosition, resetVehicle)
  --candidates = {}
  --TODO Make a simplified version for traffic
  if resetVehicle == nil then resetVehicle = true end
  rot = rot or quat(0,0,0,-1)
  rot = quat(0,0,1,0) * rot

  checkOnlyStatics = checkOnlyStatics_
  visibilityPoint = visibilityPoint_
  if removeTraffic_ ~= nil then
    removeTraffic = removeTraffic_
  end

  if resetVehicle then
    veh:setPosRot(pos.x, pos.y, pos.z, rot.x, rot.y, rot.z, rot.w)
    veh:resetBrokenFlexMesh()
  end
  setSafePosition(veh, pos, rot, centeredPosition, resetVehicle)
end

Callers

@/lua/ge/extensions/core/dynamicProps.lua
  getObjectByID(propId):setActive(1)
  --spawn.safeTeleport(scenetree.findObjectById(propId), (locationInfo.originPos + self.spawnOffset), quat(0, 0, 0, 0))
  local spawnPos = locationInfo.originPos + self.spawnOffset
@/lua/ge/extensions/editor/rallyEditor/pacenotes.lua
    if playerVehicle then
      spawn.safeTeleport(playerVehicle, pos, rot)
    end
@/lua/ge/extensions/util/showroom.lua
  veh:autoplace(false)
  --spawn.safeTeleport(veh, localToWorld(vec3(0,0,0)), quat(0,0,0,1))
end
@/lua/ge/extensions/flowgraph/nodes/vehicle/recoverInPlace.lua
    veh:resetBrokenFlexMesh()
    spawn.safeTeleport(veh, veh:getPosition(),quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()))
  end
@/lua/ge/extensions/editor/missionEditor.lua
      -- teleport vehicle
      spawn.safeTeleport(playerVehicle,vec3(shownMission.startTrigger.pos), quat(shownMission.startTrigger.rot))
@/lua/ge/extensions/career/modules/vehiclePerformance.lua

      spawn.safeTeleport(getObjectByID(vehId), dragData.strip.lanes[1].waypoints.spawn.transform.pos, dragData.strip.lanes[1].waypoints.spawn.transform.rot, nil, nil, nil, true, false)
      local spawnPoint = scenetree.findObject("skidpadSpawn")
      spawn.safeTeleport(vehicle, spawnPoint:getPosition(), quat(0,0,1,0) * spawnPoint:getRotation(), nil, nil, nil, true, false)
      return true
    function()
      spawn.safeTeleport(getPlayerVehicle(0), playerInitialPos)
      core_camera.setGlobalCameraByName(nil)
@/lua/ge/extensions/gameplay/taxi.lua
      startTaxiWithCurrentRoute(true)
      spawn.safeTeleport(getObjectByID(currentTaxiId), skipPosition, skipRotation, true, nil, false)
@/lua/ge/extensions/gameplay/traffic.lua
  if not strict then
    spawn.safeTeleport(obj, pos, rot, true, nil, false) -- this is slower, but prevents vehicles from spawning inside static geometry
  else
@/lua/ge/extensions/career/modules/delivery/vehicleTasks.lua
    if unicycle then
      spawn.safeTeleport(unicycle, psPos)
    end
@/lua/ge/extensions/gameplay/crawl/flowgraphBridge.lua

      spawn.safeTeleport(veh, pos, rot, nil, nil, nil, nil, true)
    else
@/lua/ge/map.lua

local function safeTeleport(vehId, posX, posY, posZ, rotX, rotY, rotZ, rotW, checkOnlyStatics_, visibilityPoint_, removeTraffic_, centeredPosition, resetVehicle)
  -- Wrapper function for spawn.safeTeleport()
local function safeTeleport(vehId, posX, posY, posZ, rotX, rotY, rotZ, rotW, checkOnlyStatics_, visibilityPoint_, removeTraffic_, centeredPosition, resetVehicle)
  -- Wrapper function for spawn.safeTeleport()
  local veh = scenetree.findObject(vehId)
  local rot = quat(rotX, rotY, rotZ, rotW)
  spawn.safeTeleport(veh, pos, rot, checkOnlyStatics_, visibilityPoint_, removeTraffic_, centeredPosition, resetVehicle)
end
@/lua/ge/extensions/flowgraph/nodes/mission/ARunForLife.lua

      spawn.safeTeleport(veh, vec3(actualPos), rot)
@/lua/ge/extensions/career/modules/playerDriving.lua
    local playerVehObj = getPlayerVehicle(0)
    spawn.safeTeleport(getObjectByID(vehId), playerVehObj:getPosition(), quatFromDir(playerVehObj:getDirectionVector()), nil, nil, nil, nil, false)
    core_vehicleBridge.executeAction(getObjectByID(vehId),'setIgnitionLevel', 0)
      local vehId = inventory.getVehicleIdFromInventoryId(favoriteVehicleInventoryId)
      spawn.safeTeleport(getObjectByID(vehId), playerVehObj:getPosition(), quatFromDir(playerVehObj:getDirectionVector()), nil, nil, nil, nil, false)
    end)

  spawn.safeTeleport(trailer, vehBBCenter - vehicle:getDirectionVector() * (vehBB:getHalfExtents().y + trailerBB:getHalfExtents().y), vehRot, nil, nil, nil, true, args.resetVeh)
@/lua/ge/extensions/gameplay/rally/recceApp.lua
    if playerVehicle then
      spawn.safeTeleport(playerVehicle, pos, rot)
    end
    local pos, rot = pacenoteForMove:vehiclePlacementPosAndRot(distToMove)
    spawn.safeTeleport(playerVehicle, pos, rot)
  if playerVehicle then
    spawn.safeTeleport(playerVehicle, vec3(pos), quat(rot))
  end
@/lua/ge/extensions/flowgraph/nodes/vehicle/flipUpright.lua
  if veh then
    spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector()), nil, nil, nil, nil, false )
    extensions.hook('onVehicleFlippedUpright', veh:getID())
@/lua/ge/extensions/freeroam/bigMapMode.lua
  if career_career.isActive() then
    spawn.safeTeleport(veh, pos, rot, nil, nil, nil, nil, false)
  else
  else
    spawn.safeTeleport(veh, pos, rot)
    veh:resetBrokenFlexMesh()
@/lua/ge/extensions/freeroam/facilities.lua
  if pos and rot then
    spawn.safeTeleport(veh, pos, rot, nil, nil, nil, true, resetVeh)
    core_camera.resetCamera(0)
@/lua/ge/spawn.lua

  safeTeleport(veh, pos, rot, nil, nil, nil, true, options.resetVehicle)
end
@/lua/ge/extensions/flowgraph/nodes/vehicle/moveTo.lua
      local correctedRot = quat(rot) * quat(0,0,-1,0)
      spawn.safeTeleport(veh, vec3(pos), quat(correctedRot))
      -- Vehicle is repaired, trigger reset hook for DNF penalty
    local correctedRot = quat(rot) * quat(0,0,-1,0)
    spawn.safeTeleport(veh, vec3(pos), quat(correctedRot), nil, nil, nil, nil, false)
    -- Vehicle is moved without repair, trigger flip upright hook
@/lua/ge/extensions/career/modules/testDrive.lua
    if tp then
      spawn.safeTeleport(vehicle, startPosRot.pos, startPosRot.rot, nil, nil, nil, nil, false)
@/lua/ge/extensions/core/recoveryPrompt.lua
      if veh then
        spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector()), nil, nil, nil, nil, false )
        local invVehId = career_modules_inventory.getInventoryIdFromVehicleId(target.vehId)
        else
          spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector()), nil, nil, nil, nil, true )
        end
@/lua/ge/extensions/core/multiSpawn.lua
      if not options.ignoreSafe then
        spawn.safeTeleport(obj, pos, rot, nil, nil, false)
      else
@/lua/ge/extensions/gameplay/missions/missionManager.lua
        core_vehicleBridge.executeAction(veh, 'setFreeze', false)
        spawn.safeTeleport(veh, mission._startingInfo.vehPos, mission._startingInfo.vehRot, nil, nil, nil, nil, false)
      end
@/lua/ge/extensions/gameplay/race/startPosition.lua
    log('D', logTag, 'safe teleporting vehicle to start position with corrected rotation')
    spawn.safeTeleport(veh, vec3(newPos), quat(correctedRot), nil, nil, nil, nil, false)
  end
@/lua/ge/extensions/editor/trafficManager.lua
      if sessionData._loaded then
        spawn.safeTeleport(currVeh, sessionData.home.pos, sessionData.home.rot, nil, nil, false, true)
        currVeh:queueLuaCommand('recovery.saveHome()')
      pos.x, pos.y, pos.z = options.objPos[0], options.objPos[1], options.objPos[2]
      spawn.safeTeleport(currVeh, pos, quatFromDir(currVeh:getDirectionVector(), currVeh:getDirectionVectorUp()), nil, nil, false, true)
    end
      dirVec.x, dirVec.y, dirVec.z = options.objRot[0], options.objRot[1], options.objRot[2]
      spawn.safeTeleport(currVeh, currVeh:getPosition(), quatFromDir(dirVec, vecUp), nil, nil, false, true)
    end
    if editor.uiIconImageButton(editor.icons.videocam, imSizes.medium) then
      spawn.safeTeleport(currVeh, core_camera.getPosition(), core_camera.getQuat(), nil, nil, false, true)
    end
      if mouseHandler("Click and drag to move object to here") then
        spawn.safeTeleport(currVeh, anchorPos, quatFromDir((mousePos - anchorPos):normalized(), vecUp), nil, nil, false, true)
        shiftLock = false
        local obj = scenetree.findObject(nameId)
        spawn.safeTeleport(obj, obj:getPosition(), quatFromDir(obj:getDirectionVector(), obj:getDirectionVectorUp()), nil, nil, false, true)
@/lua/ge/extensions/flowgraph/nodes/mission/postClean.lua

      spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()), nil, nil, nil, nil, doRepair)
    end
@/lua/ge/extensions/gameplay/sites/parkingSpot.lua
  if useSafeTeleport then
    spawn.safeTeleport(veh, self.pos, vehRot, options.skipVehicleIntersectionCheck, nil, removeTraffic, true, resetVehicleInSafeTeleport)
  else
@/lua/ge/extensions/gameplay/crawl/general.lua
  if startingPosition and isFromMission then
    spawn.safeTeleport(veh, startingPosition.transform.position, startingPosition.transform.rotation, nil, nil, nil, nil, true)
  end
@/lua/ge/extensions/gameplay/crawl/crawlFlowgraphBridge.lua

      spawn.safeTeleport(veh, pos, rot, nil, nil, nil, nil, true)
@/lua/ge/extensions/career/modules/inventory.lua
              end
              spawn.safeTeleport(veh, location.pos, location.rot)
            end
      -- default placement is in front of the dealership, facing it
      spawn.safeTeleport(getPlayerVehicle(0), vec3(838.51,-522.42,165.75))
      gameplay_walk.setRot(vec3(-1,-1,0), vec3(0,0,1))
      -- move walking character into position
      spawn.safeTeleport(getPlayerVehicle(0), vec3(-20.746, 598.736, 75.112))
      gameplay_walk.setRot(vec3(0,1,0), vec3(0,0,1))
      if unicycleSavedPosition then
        spawn.safeTeleport(getPlayerVehicle(0), unicycleSavedPosition)
      else
@/lua/ge/extensions/gameplay/walk.lua
    unicycle:setActive(1)
    spawn.safeTeleport(unicycle, pos, nil, nil, visibilityPoint, false)
  else
@/lua/ge/extensions/career/modules/quickTravel.lua
    gameplay_walk.setWalkingMode(true)
    spawn.safeTeleport(getPlayerVehicle(0), pos)
    turnTowardsPos(pos)
@/lua/ge/extensions/editor/util/transformUtil.lua
  if playerVehicle then
    spawn.safeTeleport(playerVehicle, self.pos, self.rot)
  end
@/lua/ge/extensions/core/quickAccess.lua
          onSelect = function()
            spawn.safeTeleport(playerVeh, playerVeh:getPosition(), quatFromDir(playerVeh:getDirectionVector()), nil, nil, nil, nil, false )
            extensions.hook('onVehicleFlippedUpright', playerVeh:getID())
            getPlayerVehicle(0):resetBrokenFlexMesh()
            spawn.safeTeleport(getPlayerVehicle(0), getPlayerVehicle(0):getPosition(), quatFromDir(getPlayerVehicle(0):getDirectionVector(), getPlayerVehicle(0):getDirectionVectorUp()), nil, nil, nil, nil, true)
            return {"hide"}
      veh:resetBrokenFlexMesh()
      spawn.safeTeleport(veh, veh:getPosition(),quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()))
    end
@/lua/ge/extensions/gameplay/garageMode.lua
      local vehicle = scenetree.findObjectById(vehicleId)
      spawn.safeTeleport(vehicle, spawnPoint:getPosition(), quat(0,0,1,0) * spawnPoint:getRotation(), nil, nil, nil, true)
    end
@/lua/vehicle/ai.lua
        obj:queueGameEngineLua(
          "map.safeTeleport(" .. obj:getId() .. ", " .. pos.x .. ", " .. pos.y .. ", " .. pos.z .. ", " .. rot.x .. ", " .. rot.y .. ", " .. rot.z .. ", " .. rot.w .. ", nil, nil, true, true, true)"
        )
@/lua/ge/extensions/career/modules/tuning.lua
  local veh = getObjectByID(vehId)
  spawn.safeTeleport(veh, vehicleTransform.pos, vehicleTransform.rot, nil, nil, nil, nil, false)
  core_vehicleBridge.executeAction(veh, 'setFreeze', true)
@/lua/ge/extensions/gameplay/discover/discover_037.lua
            for _, veh in ipairs(setupVehs) do
              --spawn.safeTeleport(veh, vec3(randomPos), quat(0,0,0,1), nil, nil, nil, nil, false)
              --veh:setClusterPosRelRot(veh:getRefNodeId(), randomPos.x, randomPos.y, randomPos.z,0,0,0,1)
@/lua/ge/extensions/gameplay/skidpadTest.lua
      local spawnPoint = scenetree.findObject("skidpadSpawn")
      spawn.safeTeleport(vehicle, spawnPoint:getPosition(), quat(0,0,1,0) * spawnPoint:getRotation(), nil, nil, nil, true, false)
      testResults = nil
@/lua/vehicle/recovery.lua
      local rot = quatFromDir(dirFront, dirUp)
      obj:queueGameEngineLua("spawn.safeTeleport(getObjectByID("..obj:getId().."), vec3("..recPoint.pos.x..","..recPoint.pos.y..","..recPoint.pos.z.."), quat("..rot.x..","..rot.y..","..rot.z..","..rot.w.."), nil, nil, " .. tostring(moveTraffic) ..  ")")
    else
@/lua/ge/extensions/editor/cosimulationSignalEditor.lua
        isPose = im.BoolPtr(true)
        spawn.safeTeleport(vehicle.veh, vec3(posX, posY, posZ), quat(rotX, rotY, rotZ, rotW))
      end
      if posX then
        spawn.safeTeleport(vehicle.veh, vec3(posX, posY, posZ), quat(rotX, rotY, rotZ, rotW))
      end
@/lua/ge/extensions/editor/driftDataEditor.lua
      if player then
        spawn.safeTeleport(player, vec3(currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.pos), quat(currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.rot), nil, nil, nil, nil, false)
      end