VE Lua Documentation

Press F to search!

getDirectionVector

Definition


-- @/=[C]:-1
function getDirectionVector(...)

Callers

@/lua/ge/extensions/gameplay/crawl/utils.lua
    local vehiclePos = veh:getPosition()
    local vRot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
    local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
  state.crawlerData.dynamicData.vehPos:set(veh:getPositionXYZ())
  state.crawlerData.dynamicData.vehDirectionVector:set(veh:getDirectionVector())
  state.crawlerData.dynamicData.vehDirectionVectorUp:set(veh:getDirectionVectorUp())
@/lua/ge/extensions/editor/aiTests.lua
          local pos = obj:getPosition()
          local dirVec = obj:getDirectionVector()
          local nodes = map.getMap().nodes
          v.pos:set(obj:getPosition())
          v.rot:set(quatFromDir(obj:getDirectionVector(), obj:getDirectionVectorUp()) * quat(0, 0, 1, 0))
@/lua/ge/extensions/flowgraph/nodes/vehicle/touchingStatic.lua

  self.xOffset:set(veh:getDirectionVector():cross(veh:getDirectionVectorUp()) * (self.pinIn.widthOffset.value or 0))
  self.yOffset:set(veh:getDirectionVector() * (self.pinIn.lengthOffset.value or 0))
  self.xOffset:set(veh:getDirectionVector():cross(veh:getDirectionVectorUp()) * (self.pinIn.widthOffset.value or 0))
  self.yOffset:set(veh:getDirectionVector() * (self.pinIn.lengthOffset.value or 0))
  self.zOffset:set(veh:getDirectionVectorUp() * (self.pinIn.heightOffset.value or 0.5))
@/lua/ge/extensions/editor/camPathEditor.lua
        -- Transform offset from local space to world space using vehicle direction vectors
        local forward = vec3(playerVehicle:getDirectionVector())
        local up = vec3(playerVehicle:getDirectionVectorUp())
          -- Transform offset from local space to world space using vehicle direction vectors
          local forward = vec3(playerVehicle:getDirectionVector())
          local up = vec3(playerVehicle:getDirectionVectorUp())
@/lua/vehicle/extensions/advancedwheeldebug.lua

  local vehForward = obj:getDirectionVector()
  local vehRight = obj:getDirectionVectorRight()
@/lua/vehicle/ai.lua
  pos = obj:getFrontPosition(),
  dirVec = obj:getDirectionVector(),
  prevDirVec = obj:getDirectionVector(),
  dirVec = obj:getDirectionVector(),
  prevDirVec = obj:getDirectionVector(),
  upVec = obj:getDirectionVectorUp(),

  local dirVec = obj:getDirectionVector()
  local avgFrontWheelPos, frontWheelCount = vec3(), 0
@/lua/vehicle/controller/tech/cosimulationCoupling.lua
  kOut[16], kOut[17] = obj:getGroundSpeed(), obj:getAltitude()                                      -- Ground speed, m/s. Altitude, meters.
  local fwd = obj:getDirectionVector()
  fwd:normalize()
@/lua/vehicle/mapmgr.lua
  pos = pos or obj:getPosition()
  dir = dir or obj:getDirectionVector()
@/lua/ge/extensions/core/cameraModes/path.lua
        local veh = data.veh
        local forward = vec3(veh:getDirectionVector())
        local up = vec3(veh:getDirectionVectorUp())
@/lua/ge/extensions/flowgraph/nodes/vehicle/special/wheelDistance.lua
    vehCenter:set(vehicle:getSpawnWorldOOBB():getCenter())
    dirVec:set(vehicle:getDirectionVector())
    -- We need to identify all vehicle wheels and then calculate the distance from the start line for each wheel
    local dot = pointToTrigger:dot(dirVec:normalized())
    local distanceFromStart = -dot --(vehicle:getDirectionVector() * dot):len()
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veFlexbodyDebug.lua
  local refPos = vEditor.vdata.nodes[vEditor.vdata.refNodes[0].ref].pos
  local rotInv = quatFromDir(-vEditor.vehicle:getDirectionVector(), vEditor.vehicle:getDirectionVectorUp()):inversed()
  local vertPosLocal = rotInv * flexbodyObj:getDebugVertexPos(chosenVertID) + refPos
@/lua/vehicle/extensions/perfectLaunch.lua
    local velocity = obj:getVelocity()
    local directionVector = obj:getDirectionVector()
    local actualVelocity = max((directionVector:dot(velocity) / (directionVector:length() * directionVector:length()) * directionVector):length(), 0)
@/lua/ge/extensions/freeroam/dragRace.lua
      -- We need actual distance from starting line and not the center
      local dot = vec3(nodePos.x, nodePos.y, nodePos.z):dot(vehicle:getDirectionVector():normalized())
      maxFwd = math.max(dot, maxFwd)
    -- Point inbetween both wheels is calculated so that we can get a somewhat accurate distance measurement
    local centerPoint = vehicle:getPosition() + maxFwd * vehicle:getDirectionVector():normalized()
    local centerPointToTrigger = vec3(centerPoint - trigger:getPosition())

    local dot = centerPointToTrigger:dot(vehicle:getDirectionVector():normalized())
    local distanceFromStart = -dot
    if debugDist and debugDrawer then
      debugDrawer:drawLine((vehicle:getDirectionVector() + centerPoint), centerPoint, ColorF(1,0,0,1))
@/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/gameplay/discover.lua
-- use this to get the position, rotation and partConfig of all vehicles
for id in activeVehiclesIterator() do local veh = scenetree.findObjectById(id) print(veh) dump({veh:getPosition(), quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()), veh.jbeam, veh.partConfig}) end
]]
@/lua/ge/ge_utils.lua
      -- Spawn the vehicle on the left of the player vehicle
      local dir = vec3(playerVehicle:getDirectionVector()):normalized()
      local offset = vec3(-dir.y, dir.x, 0)
    else
      options.rot = quatFromDir(vec3(playerVehicle:getDirectionVector()):normalized(), vec3(playerVehicle:getDirectionVectorUp()):normalized())
    end
@/lua/ge/extensions/gameplay/taxi.lua
  local vehPos = veh:getPosition()
  local vehFwd = veh:getDirectionVector()
  local bestDist = math.huge
@/lua/vehicle/controller/drivingDynamics/sensors/sensorHub.lua
  M.worldVelocity = obj:getVelocity()
  M.directionVector = obj:getDirectionVector()
  M.directionVectorUp = obj:getDirectionVectorUp()
@/lua/vehicle/controller/tech/tyreBarrier.lua
  if isPreamble then
    thrusters.applyVelocity(obj:getDirectionVector():normalized() * (initialVel + initalVelOffset) / 3.6, 0.5)
    local pos, vel = obj:getPosition(), obj:getVelocity()
@/lua/ge/extensions/gameplay/rally/cutCapture.lua
  local vehPos = self.vehicle:getPosition()
  local vehRot = quatFromDir(self.vehicle:getDirectionVector(), self.vehicle:getDirectionVectorUp())
  local now = rallyUtil.getTime()
@/lua/vehicle/beamstate.lua
  local pos = obj:getPosition()
  local front = obj:getDirectionVector()
  local up = obj:getDirectionVectorUp()
@/lua/vehicle/extensions/mqttGrafanaDemo.lua
local function updateWheelData()
  local vectorForward = obj:getDirectionVector()
  local vectorUp = obj:getDirectionVectorUp()
@/lua/vehicle/controller/esc.lua
    local velocity = obj:getVelocity()
    local directionVector = obj:getDirectionVector()
    local actualVelocity = (directionVector:dot(velocity) / (directionVector:length() * directionVector:length()) * directionVector):length()

  local vectorForward = vec3(v.data.nodes[v.data.refNodes[0].ref].pos) - vec3(v.data.nodes[v.data.refNodes[0].back].pos) -- obj:getDirectionVector() --vector facing forward
  local vectorUp = vec3(v.data.nodes[v.data.refNodes[0].up].pos) - vec3(v.data.nodes[v.data.refNodes[0].ref].pos)
@/lua/vehicle/extensions/utRecorder.lua
  local pos = obj:getPosition()
  local dir = obj:getDirectionVector()
  local d = {
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/vePropTransformer.lua

  local dirFront = vEditor.vehicle:getDirectionVector()
  local dirUp = vEditor.vehicle:getDirectionVectorUp()

  local dirFront = vEditor.vehicle:getDirectionVector()
  local dirUp = vEditor.vehicle:getDirectionVectorUp()

  local dirFront = vEditor.vehicle:getDirectionVector()
  local dirUp = vEditor.vehicle:getDirectionVectorUp()
@/lua/vehicle/controller/tech/roadsSensor.lua
  -- Compute the player vehicle pose data.
  pos, fwd, vel = obj:getPosition(), obj:getDirectionVector(), vec3(obj:getSmoothRefVelocityXYZ())
  fwd:normalize()
@/lua/ge/extensions/scenario/busdriver.lua
    -- calculate smoothness rating
    local fwd  = vec3(pv:getDirectionVector()):normalized()
    local up   = vec3(pv:getDirectionVectorUp()):normalized()
    if abs(stopDistance) < 20 then
      local fwd = vec3(pv:getDirectionVector()):normalized()
      local busStopFwd = vec3(busStop:getTransform():getColumn(1)):normalized()
    local ob = pv:getSpawnWorldOOBB()
    local vDirVec=vec3(pv:getDirectionVector())
    local tr = quat(nextStop[4])
@/lua/vehicle/scriptai.lua
  local vehCenterPositionRelative = vec3(
    vehCenterPosRel:dot(obj:getDirectionVectorUp():cross(obj:getDirectionVector())),
    -(vehCenterPosRel:dot(obj:getDirectionVector())),
    vehCenterPosRel:dot(obj:getDirectionVectorUp():cross(obj:getDirectionVector())),
    -(vehCenterPosRel:dot(obj:getDirectionVector())),
    vehCenterPosRel:dot(obj:getDirectionVectorUp())
  local prevDirVec = aiDirVec
  aiDirVec = obj:getDirectionVector()

  local dir, up = obj:getDirectionVector(), obj:getDirectionVectorUp()
  initConditions.dir = {x = dir.x, y = dir.y, z = dir.z}
@/lua/ge/map.lua
  local ff = 0.5 * vecUp:dot(vec3(obj:getDirectionVectorUp())) -- frictionCoeff * Normal Force.
  local objDirVec = vec3(obj:getDirectionVector())
  local fw = vecUp:dot(sign(objVel:dot(objDirVec)) * objDirVec) -- road grade force
@/lua/ge/extensions/core/cameraModes/crash.lua
      local driverPos = veh2:getPosition() + veh2:getNodePosition(driverNode)
      if veh2:getDirectionVector():dot(bb1:getCenter() - driverPos) > 0 then
        self.cockpitView = true
@/lua/ge/extensions/flowgraph/nodes/vehicle/alignForCoupling.lua
        if self.pinIn.relativeRotationQuat.value then
          desiredRot = desiredRot * quatFromDir(vec3(v1:getDirectionVector()), vec3(v1:getDirectionVectorUp()))
        else
@/lua/vehicle/extensions/chassisData.lua

  local vectorForward = vec3(v.data.nodes[v.data.refNodes[0].ref].pos) - vec3(v.data.nodes[v.data.refNodes[0].back].pos) -- obj:getDirectionVector() --vector facing forward
  local vectorUp = vec3(v.data.nodes[v.data.refNodes[0].up].pos) - vec3(v.data.nodes[v.data.refNodes[0].ref].pos)
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veView.lua
    if focusObj then
      local fwd = focusObj:getDirectionVector()
      view.pos = focusPos + focusRot * vec3(0, 0, 5)
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veGeneralData.lua
      local data = {}
      data.heading = vec3(obj:getDirectionVector())
      data.pos = vec3(obj:getPosition())
@/lua/ge/extensions/gameplay/drag/general.lua
    local vehiclePos = vehicle:getPosition()
    local forward = vehicle:getDirectionVector()
    local up = vehicle:getDirectionVectorUp()
    local vehiclePos = vehicle:getPosition()
    local forward = vehicle:getDirectionVector()
    local up = vehicle:getDirectionVectorUp()
@/ui/modules/apps/IndicatedAirspeed/app.js

        bngApi.activeObjectLua('(obj:getDirectionVector():dot(obj:getVelocity() - obj:getFlow())) * math.sqrt(obj:getDensityAtNode(0) / 1.225)', callback)
        var displaySpeed = Math.max(airspeed * speedScale, 0)
@/lua/ge/extensions/flowgraph/nodes/scene/raceLineParking.lua

  local vDirVec=veh:getDirectionVector()
  local tr = self.pinIn.rotation.value or {0,0,0,0}

  local fwd = veh:getDirectionVector():normalized()
  local zVec,yVec,xVec = tr*vec3(0,0,1), tr*vec3(0,1,0), tr*vec3(1,0,0)
@/lua/ge/extensions/core/multiSpawn.lua
      pos = playerVeh:getPosition() + playerVeh:getInitialNodePosition(playerVeh:getRefNodeId()) -- centered
      rot = playerVeh:getDirectionVector()
      start = 1 -- avoids spawning conflict at player position
@/lua/vehicle/extensions/escMeasurement.lua
    local velocity = obj:getVelocity()
    local directionVector = obj:getDirectionVector()
    local actualVelocity = (directionVector:dot(velocity) / (directionVector:length() * directionVector:length()) * directionVector):length()
@/lua/ge/extensions/editor/tech/sensorConfiguration/utilities.lua
local function posVS2Coeffs(posVS, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
local function coeffs2PosVS(c, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
local function sensor2VS(dirLoc, upLoc, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
local function vS2Sensor(dirVS, upVS, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
local function dirWorldSpace2Sensor(dirWS, upWS, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
@/lua/ge/extensions/editor/sceneView.lua
        if focusObj then
          local fwd = focusObj:getDirectionVector()
          view.pos = focusPos + focusRot * vec3(0, 0, 5)
@/lua/vehicle/controller/sbrGauges.lua
    mapData.x, mapData.y = obj:getPositionXYZ()
    local dir = obj:getDirectionVector():normalized()
    mapData.rotation = deg(atan2(dir:dot(vecX), dir:dot(vecY)))
@/lua/ge/extensions/util/trackBuilder/splineTrack.lua
  local trackPosition = subTrackPositions[subTrackIndex]
  local vehicleDir = playerVehicle:getDirectionVector()
  M.setTrackPosition(trackPosition.position.x, trackPosition.position.y, trackPosition.position.z, (-math.atan2(vehicleDir.y, -vehicleDir.x) + math.pi / 2) * 180 / math.pi)
@/lua/vehicle/extensions/tech/wheelForces.lua
  --local leftVector = -obj:getDirectionVectorRight()
  --local forwardVector = obj:getDirectionVector()
  for _, data in ipairs(wheelData) do
@/lua/ge/extensions/campaign/exploration.lua
    local vehiclePosition = vehicle:getPosition()
    local vehicleDirection = vehicle:getDirectionVector()
    lastRampTriggerPos = {desiredPos = vehiclePosition, desiredDir = vehicleDirection}
@/lua/ge/extensions/gameplay/rally/vehicleCapture.lua
  local vehPos = self.vehicle:getPosition()
  local vehRot = quatFromDir(self.vehicle:getDirectionVector(), self.vehicle:getDirectionVectorUp())
  local now = rallyUtil.getTime()
@/lua/vehicle/extensions/tech/techCore.lua
    pos = obj:getPosition(),
    dir = obj:getDirectionVector(),
    up = obj:getDirectionVectorUp(),
M.handleSetVelocity = function(request)
  thrusters.applyVelocity(obj:getDirectionVector() * request['velocity'], request['dt'])
  request:sendACK('VelocitySet')
@/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/flowgraph/nodes/vehicle/applyVelocity.lua
  else
    dirVec:set(veh:getDirectionVector())
  end
@/lua/ge/extensions/core/funstuff.lua
  if veh then
    local dir = veh:getDirectionVector()
    dir:normalize()
  if veh then
    local dir = veh:getDirectionVector()
    dir:normalize()
  local pos = vehicle:getPosition()
  local rot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
  -- Create a point at the bottom center in local space (Z is up/down)
@/gameplay/missionTypes/collection/customNodes/collectionNode.lua
      pos = marker.pos,
      rot = quatFromDir(-1*veh:getDirectionVector())
    }
@/lua/ge/extensions/gameplay/missions/missionManager.lua
    startingInfo.vehPos = veh:getPosition()
    startingInfo.vehRot = quatFromDir(vec3(veh:getDirectionVector()), vec3(veh:getDirectionVectorUp()))
    startingInfo.vehId = veh:getID()
@/lua/vehicle/extensions/scenario/shiftBooster.lua

  local forceVec = obj:getDirectionVector()
  -- get a boost vector
@/lua/ge/extensions/tech/impactgen/crashOutput.lua
  local pos = veh:getSpawnWorldOOBB():getCenter()
  local dir = veh:getDirectionVector()
@/lua/ge/extensions/gameplay/discover/discover_037.lua
          local pos = vehicle:getPosition()
          local rot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
          -- Create a point at the bottom center in local space (Z is up/down)
@/lua/vehicle/extensions/aeroDebug.lua
  --obj:setWind(0,0,55.55)
  M.directionVector = -obj:getDirectionVector()
  M.directionVectorUp = obj:getDirectionVectorUp()
@/lua/ge/extensions/career/modules/delivery/precisionParking.lua
  local vehicleRot = vehicle:getRotation()
  local vehicleDir = vehicle:getDirectionVector()
@/lua/ge/extensions/flowgraph/modules/prefabModule.lua
      -- get current position and rotation
      vehicleTransforms[k] = {pos = veh:getPosition(), rot = quat(0, 0, 1, 0) * quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())}
    end
@/lua/ge/extensions/flowgraph/nodes/scene/camera/cameraCircle.lua
    if veh then
      local dirVec = veh:getDirectionVector()
      self.angle = self.angle + math.deg(math.atan2(dirVec.x, dirVec.y))
@/lua/ge/spawn.lua
    pos = veh:getPosition()
    rot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
  end
    pos = veh:getPosition()
    rot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
  end
  -- Translate the trailer back so that the trailers BB touches the cars BB
  local direction = car:getDirectionVector()
  direction:normalize()
@/lua/ge/extensions/scenario/waypoints.lua
      local vehiclePos = vehicle:getPosition()
      local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
      local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
    local vPos = vehicle:getPosition()
    local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
    for i, corner in ipairs(vehWpData.wheelOffsets) do
@/lua/ge/extensions/util/export.lua
    local node = gltfRoot.nodes[e + 1]
    local d = veh:getDirectionVector()
    local u = veh:getDirectionVectorUp()
@/lua/vehicle/recovery.lua
    pos = objPosition,
    dirFront = obj:getDirectionVector(),
    dirUp = obj:getDirectionVectorUp()
@/lua/vehicle/extensions/dragAi.lua
    distanceVector = vec3(distanceVector.x, distanceVector.y, 0)
    local directionVector = obj:getDirectionVector()
    directionVector = vec3(directionVector.x, directionVector.y, 0)
@/lua/ge/extensions/tech/multiscreen.lua
  if veh then
    local vehicleRotation = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
    local vehiclePosition = veh:getPosition()
@/lua/ge/extensions/tech/techCore.lua
local function coeffs2PosVS(c, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
local function sensor2VS(dirLoc, upLoc, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
@/lua/vehicle/controller/gauges/customModules/navigationData.lua
  mapData.x, mapData.y = obj:getPositionXYZ()
  local dir = obj:getDirectionVector()
  mapData.rotation = deg(atan2(dir:dot(vecX), dir:dot(vecY)))
@/lua/ge/extensions/gameplay/rally/vehicleTracker.lua
      local vehiclePos = vehicle:getPosition()
      local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
      local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
--       local vPos = vehicle:getPosition()
--       local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
--       for i, corner in ipairs(self.wheelOffsets) do
@/lua/vehicle/bdebugImpl.lua
    local initRefNodePos = v.data.nodes[v.data.refNodes[0].ref].pos
    local rot = quatFromDir(-obj:getDirectionVector(), obj:getDirectionVectorUp())
    local relCOGPos = rot:inversed() * (p - vehPos) + initRefNodePos
@/lua/ge/extensions/core/quickAccess.lua
  local vehPos = veh:getPosition()
  local vehFwd = veh:getDirectionVector()
  local bestWp = nil
          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/core/hotlapping.lua
    if veh and veh:getPosition():squaredDistance(cpPos) <= 25 then -- only gets set if vehicle is roughly within checkpoint (otherwise, no normal)
      cpDir = veh:getDirectionVector()
    end
@/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/flowgraph/nodes/vehicle/recoverInPlace.lua
    veh:resetBrokenFlexMesh()
    spawn.safeTeleport(veh, veh:getPosition(),quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()))
  end
@/lua/vehicle/extensions/straightLine.lua
  if not target then
    local direction = obj:getDirectionVector():z0()
    local pos = obj:getPosition()
    local distanceVector = targetPos - myPos
    local directionVector = obj:getDirectionVector()
    local angleError = (distanceVector:dot(directionVector) / (directionVector:length() * distanceVector:length()))
@/lua/ge/extensions/editor/trafficManager.lua
  vehData.vehType = core_vehicles.getModel(vehData.model).model.Type
  vehData.home = vehData.home or {pos = veh:getPosition(), rot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())} -- reset transform
  vehData.aiType = vehData.aiType or "basic" -- basic, script, target, user
      currVeh:queueLuaCommand('recovery.saveHome()')
      sessionData.home = {pos = currVeh:getPosition(), rot = quatFromDir(currVeh:getDirectionVector(), currVeh:getDirectionVectorUp())}
      editor.showNotification("Updated home position of current vehicle.")
        pos = currVeh:getPosition(),
        rot = quatFromDir(currVeh:getDirectionVector(), currVeh:getDirectionVectorUp()),
        model  = currVeh.jbeam,
      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

    local dirVec = mapVehData.dirVec or currVeh:getDirectionVector()
    options.objRot[0], options.objRot[1], options.objRot[2] = dirVec.x, dirVec.y, dirVec.z
        local obj = scenetree.findObject(nameId)
        spawn.safeTeleport(obj, obj:getPosition(), quatFromDir(obj:getDirectionVector(), obj:getDirectionVectorUp()), nil, nil, false, true)
@/lua/ge/extensions/core/cameraModes/unicycle.lua
    local veh = getPlayerVehicle(0)
    self:setCustomData({pos=data.pos, front=veh:getDirectionVector(), up=veh:getDirectionVectorUp()})
  end
@/lua/vehicle/extensions/tech/vehiclePOI.lua
  -- [Note: these are in world-space].
  local pos, fwd, vehLength, vehFront = obj:getPosition(), obj:getDirectionVector(), obj:getInitialLength(), obj:getFrontPosition()
  fwd:normalize()
@/lua/ge/extensions/editor/gen/decal.lua
local function forTarget()
    local dircar = veh:getDirectionVector()
        lo('>>^^^^^^^^^^ forTarget:'..tostring(dircar)..':'..tostring(car.target and car.target.p)..':'..tostring(car.target and car.target.rd and car.target.rd.ind..'_'..car.target.side or nil))
--                lo('?? for_time:'..ctime..':'..tostring(car.time))
--                lo('?? for_DV:'..tostring(veh:getDirectionVector())..':'..tostring(veh:getVelocity():normalized()))
            if veh:getVelocity():length() > 8 then
@/lua/ge/extensions/flowgraph/nodes/scene/rectMarker.lua
  local ob = veh:getSpawnWorldOOBB()
  local vDirVec=veh:getDirectionVector()
  local rotationValues = self.pinIn.rotation.value or zerosTable4
@/lua/ge/extensions/freeroam/bigMapMode.lua
        -- Project the vehicle direction vector on to the camera plane and then determine the angle
        local vehDir = playerVehicle:getDirectionVector()
        local vehicleDirLocalX, vehicleDirLocalY = vehDir:dot(core_camera.getRight()), vehDir:dot(core_camera.getUp())
@/lua/ge/extensions/gameplay/traffic/vehicle.lua
          if self.respawnSpeed then
            -- obj:queueLuaCommand('thrusters.applyVelocity(obj:getDirectionVector() * '..(self.respawnSpeed * self.alpha)..')') -- makes vehicle start at speed
            -- NOTE: test this to see if it can be enabled
@/lua/ge/extensions/gameplay/race/race.lua
    local vehiclePos = vehicle:getPosition()
    local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
    local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
      else
        finalDir = getObjectByID(id):getDirectionVector() -- last resort, this shouldn't happen
      end
        local vehiclePos = veh:getPosition()
        local vRot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
        local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
@/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/core/checkpoints.lua
  vehicleCheckpoints[vehicleId].pos = (cpData and vec3(cpData.desiredPos)) or vehicle:getPosition()
  vehicleCheckpoints[vehicleId].dirVec = (cpData and vec3(cpData.desiredDir)) or vehicle:getDirectionVector()
  vehicleCheckpoints[vehicleId].upVec =  vehicle:getDirectionVectorUp()
@/lua/ge/extensions/editor/cosimulationSignalEditor.lua
local function coeffs2PosVS(c, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
local function sensor2VS(dirLoc, upLoc, veh)
  local fwd, up = veh:getDirectionVector(), veh:getDirectionVectorUp()
  fwd:normalize()
        local veh = vehicle.veh
        local pos, rot = veh:getPosition(), quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
        csv:add('vehicle', nil, 'posX', tostring(pos.x), "number", nil, nil, nil)