VE Lua Documentation

Press F to search!

quat

Definition


-- @/lua/common/mathlib.lua:842

-- T3d's quats use -w
function quat(x, y, z, w)
  if rawequal(y, nil) then
    if type(x) == 'table' and x[4] ~= nil then
      return newLuaQuatxyzw(x[1], x[2], x[3], x[4])
    elseif rawequal(x, nil) then
      return newLuaQuatxyzw(1, 0, 0, 0)
    else
      return newLuaQuatxyzw(x.x, x.y, x.z, x.w)
    end
  else
    return newLuaQuatxyzw(x, y, z, w)
  end
end

Callers

@/lua/ge/extensions/core/paths.lua
      pos = vec3(markerData.pos.x, markerData.pos.y, markerData.pos.z),
      rot = quat(markerData.rot.x, markerData.rot.y, markerData.rot.z, markerData.rot.w),
      time = markerData.time,
          pos = vec3(marker:getPosition()),
          rot = quat(marker:getRotation()),
          time = marker.timeToNext or marker.seconds,
@/lua/ge/extensions/editor/raceEditor/tools.lua
    elseif mode == 'prefab' then
      local r = quat(t.rot)
      r = r:toTorqueQuat()
@/lua/common/tech/techUtils.lua
      if tbl.w == nil then return vec3(tbl.x, tbl.y, tbl.z) end
      if type(tbl.w) == 'number' then return quat(tbl.x, tbl.y, tbl.z, tbl.w) end
    end
@/lua/ge/server/commands.lua
  core_camera.setPosition(player, playerVehicle:getPosition())
  core_camera.setRotation(player, quat(playerVehicle:getRotation()))
  core_camera.resetCamera(player)
  local camRot = quatFromDir(camDir, vec3(0,0,1))
  local rot =  quat(0, 0, 1, 0) * camRot -- vehicles' forward is inverted
  playerVehicle:setPositionRotation(pos.x, pos.y, pos.z, rot.x, rot.y, rot.z, rot.w)
  local camRot = quatFromDir(camDir, vec3(0,0,1))
  camRot = quat(0, 0, 1, 0) * camRot -- vehicles' forward is inverted

  local vehRot = quat(playerVehicle:getClusterRotationSlow(playerVehicle:getRefNodeId()))
  local diffRot = vehRot:inversed() * camRot
@/lua/ge/extensions/gameplay/crawl/crawlFlowgraphBridge.lua
      local pos = startingPos.position
      local rot = startingPos.rotation or quat(0, 0, 0, 1)
@/lua/ge/extensions/gameplay/crawl/utils.lua
                position = pathnode.pos,
                rotation = pathnode.rotation or quat(0, 0, 0, 1),
                index = i,
      vehDirectionVectorUp = vec3(),
      vehRot = quat(),
      vehVelocity = vec3(),
  if not state or not state.crawlerData then
    return quat(0, 0, 0, 1)
  end
  if not veh then
    return quat(0, 0, 0, 1)
  end
  local yaw = math.atan2(vehicleRotation.y, vehicleRotation.w) * 2
  return quat(math.cos(yaw * 0.5), 0, 0, math.sin(yaw * 0.5))
end
@/lua/ge/extensions/core/cameraModes/bigMap.lua

    local forwardDir = quat(self.bigMapCamRotation) * vec3(0,1,0)
    forwardDir.z = 0
@/lua/ge/extensions/gameplay/drift/stuntZones.lua
          {type = "donut", cooldown = 8, pos = pos + vec3(30, 0, 0), scl = 10},
          {type = "driftThrough", cooldown = 8, rot = quat(0, 0, 0, 1), pos = pos + vec3(10, 20, 0), scl = vec3(8, 1, 1)},
          {type = "driftThrough", cooldown = 8, rot = quat(0, 0, 0, 1), pos = pos + vec3(10, 29, 0), scl = vec3(8, 1, 1)},
          {type = "driftThrough", cooldown = 8, rot = quat(0, 0, 0, 1), pos = pos + vec3(10, 20, 0), scl = vec3(8, 1, 1)},
          {type = "driftThrough", cooldown = 8, rot = quat(0, 0, 0, 1), pos = pos + vec3(10, 29, 0), scl = vec3(8, 1, 1)},
          {type = "hitPole", pos = pos + vec3(-10, 0, 0)},
        for i = 1, benchmarkCount[0], 1 do
          table.insert(tempStuntZones, {type = "driftThrough", cooldown = 8, rot = quat(0, 0, 0, 1), pos = pos + vec3(0, i * 10, 0), scl = vec3(8, 1, 1)})
        end
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua
        if om then om:delete() end
        local tveh = spawn.spawnVehicle('metal_box', nil, vec3(0,0,0), quat(0,0,1,0))
        scenetree.findObjectById(tveh:getId()):delete()
        scenetree.findObjectById(tveh:getId()):delete()
        cobj = spawn.spawnVehicle(amodel[env.ui['model_up']], nil, vec3(0,0,0), quat(0,0,1,0)):getId()
            lo('?? if_COOO:'..tostring(cobj))
                    scenetree.findObjectById(id):delete()
                    local veh = spawn.spawnVehicle(model, nil, vec3(1,3,4), quat(0,0,1,0))
                    vid = veh:getId()

        local veh = spawn.spawnVehicle(model, nil, vec3(3,3,4), quat(0,0,1,0))
        vid = veh:getId()
                if om then om:delete() end
                local tveh = spawn.spawnVehicle('metal_box', nil, vec3(0,0,0), quat(0,0,1,0))
                    lo('?? mid:'..tostring(tveh))
                scenetree.findObjectById(tveh:getId()):delete()
                spawn.spawnVehicle(amodel[env.ui['model_up']], nil, vec3(0,0,0), quat(0,0,1,0))
                break
                if om then om:delete() end
                local tveh = spawn.spawnVehicle('metal_box', nil, vec3(0,0,0), quat(0,0,1,0))
                scenetree.findObjectById(tveh:getId()):delete()
                scenetree.findObjectById(tveh:getId()):delete()
                spawn.spawnVehicle(amodel[env.ui['model_up']], nil, vec3(0,0,0), quat(0,0,1,0))
                break
--                    if om then om:delete() end
--                    spawn.spawnVehicle('metal_box', nil, vec3(0,0,0), quat(0,0,1,0))
            local djpart = J.part2file()
            end
            local veh = spawn.spawnVehicle(amodel[env.ui['model_up'] ], nil, vec3(0,0,0), quat(0,0,1,0))
                lo('?? for_VEH:'..tostring(veh))
                lo('?? reloaded:')
    --        spawn.spawnVehicle(amodel[env.ui['model_up'] ], nil, vec3(0,0,0), quat(0,0,1,0))
    --        pvd = extensions.core_vehicle_manager.getPlayerVehicleData()
        end
        local veh = spawn.spawnVehicle(amodel[val], nil, vec3(0,0,0), quat(0,0,1,0))
        cobj = veh:getId()
                        if om then om:delete() end
                        local tveh = spawn.spawnVehicle('metal_box', nil, vec3(0,0,0), quat(0,0,1,0))
                        scenetree.findObjectById(tveh:getId()):delete()
                        scenetree.findObjectById(tveh:getId()):delete()
                        spawn.spawnVehicle('pickup', nil, vec3(0,0,0), quat(0,0,1,0))
                        break
--                    if om then om:delete() end
--                    spawn.spawnVehicle('metal_box', nil, vec3(0,0,0), quat(0,0,1,0))
                    local djpart = J.part2file()
@/lua/common/lpack.lua
  elseif c == 251 then -- quat
    return quat(bufDec:decode(), bufDec:decode(), bufDec:decode(), bufDec:decode())
  end
      w, c, seridx = peekDec[c](seridx)
      return quat(x, y, z, w), c, seridx
    end
@/lua/ge/extensions/gameplay/crawl/flowgraphBridge.lua
      local pos = startingPos.position
      local rot = startingPos.rotation or quat(0, 0, 0, 1)
@/lua/ge/extensions/editor/tech/roadArchitect/profiles.lua
local pView = vec3(-24.02901173, 0.8800626756, 1007.733115)
local pRot = quat(0.1090148618, -0.114031973, 0.7137778829, 0.6823735069)
local numLoadedProfiles = 1
@/lua/ge/extensions/career/modules/tuning.lua
  local oldVeh = getObjectByID(vehId)
  local vehicleTransform = {pos = oldVeh:getPosition(), rot = quat(0,0,1,0) * quat(oldVeh:getRefNodeRotation())}
  local oldVeh = getObjectByID(vehId)
  local vehicleTransform = {pos = oldVeh:getPosition(), rot = quat(0,0,1,0) * quat(oldVeh:getRefNodeRotation())}
@/lua/ge/extensions/core/multiSpawn.lua
      else
        rot = quat(0, 0, 1, 0) * rot
        obj:setPosRot(pos.x, pos.y, pos.z, rot.x, rot.y, rot.z, rot.w)
@/lua/ge/extensions/editor/raceEditor/startPositions.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      sp.rot = quat(rotation)
    else
    else
      sp.rot = self.beginDragRotation * quat(rotation)
    end
@/lua/ge/extensions/gameplay/drift/saveLoad.lua
    if elem.pos and type(elem.pos) == "table" and elem.pos.x and elem.pos.y and elem.pos.z then elem.pos = vec3(elem.pos) end
    if elem.rot and type(elem.rot) == "table" and elem.rot.x and elem.rot.y and elem.rot.z and elem.rot.w then elem.rot = quat(elem.rot) end
    if elem.scl and type(elem.scl) == "table" and elem.scl.x and elem.scl.y and elem.scl.z then elem.scl = vec3(elem.scl) end
@/lua/ge/extensions/flowgraph/nodes/scene/sevensegmentDisplay.lua
    self.rot = self.pinIn.rotation.value or { 0, 0, 0, 0 }
    self.rot = quat(self.rot[1], self.rot[2], self.rot[3], self.rot[4])
    self.tRot = self.rot:toTorqueQuat()
@/lua/ge/extensions/editor/renderTest.lua
        pos = focusPos
        focusRot = quat(veh:getRotation())
        dump{'focusRot = ', focusRot:toEulerYXZ()}
@/lua/ge/extensions/editor/trafficSignalsEditor.lua
local lastUsed = {signalType = "lightsBasic"}
local oldTransform = {pos = vec3(), rot = quat(), scl = 1}
local options = {smartName = true, smartObjectSelection = true, showClosestRoad = false}
    oldTransform.pos = vec3(instances[selected.signal].pos)
    oldTransform.rot = quat(instances[selected.signal].rot)
  end
      pos = vec3(instances[selected.signal].pos),
      rot = quat(instances[selected.signal].rot)
    }
      if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
        instances[selected.signal].rot = quat(rotation)
      else
      else
        instances[selected.signal].rot = oldTransform.rot * quat(rotation)
      end
@/lua/ge/extensions/editor/missionEditor.lua
      -- teleport vehicle
      spawn.safeTeleport(playerVehicle,vec3(shownMission.startTrigger.pos), quat(shownMission.startTrigger.rot))
          radius = 3,
          rot = quat(0,0,0,1)
          },
@/lua/ge/extensions/editor/mapSensorEditor.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      local q = quat(q2)
      s.dir, s.up = q:toDirUp()
    else
      local q = beginDragRotation * quat(q2)
      s.dir, s.up = q:toDirUp()
@/lua/ge/extensions/editor/aiTests.lua
    pos = obj:getPosition(),
    rot = quat(obj:getRotation()),
  }
          v.pos:set(obj:getPosition())
          v.rot:set(quatFromDir(obj:getDirectionVector(), obj:getDirectionVectorUp()) * quat(0, 0, 1, 0))
@/lua/ge/extensions/editor/buildingEditor.lua
		pos.z = pos.z + hter
		q = quat(0.0490453, 0.179371, -0.947768, 0.259147)
]]
@/lua/ge/extensions/flowgraph/nodes/scene/camera/setCameraRotation.lua
function C:init()
  self.rotation = quat(0,0,0,0)
  self.mode = 'custom'
    if im.DragFloat4("##pos"..self.id,pos, 0.5) then
      self.rotation = quat(pos[0], pos[1], pos[2], pos[3]):normalized()
      reason = "Changed Rotation"
  if self.mode == 'from Pin' then
    self.rotation = quat(self.pinIn.rot.value)
  end
function C:_onDeserialized(nodeData)
  self.rotation = nodeData.rot and (quat(nodeData.rot[1],nodeData.rot[2],nodeData.rot[3],nodeData.rot[4])) or quat(0,0,0,0)
  self.mode = nodeData.mode or 'custom'
function C:_onDeserialized(nodeData)
  self.rotation = nodeData.rot and (quat(nodeData.rot[1],nodeData.rot[2],nodeData.rot[3],nodeData.rot[4])) or quat(0,0,0,0)
  self.mode = nodeData.mode or 'custom'
@/lua/ge/extensions/flowgraph/nodes/recording/recordCamera.lua
    local rot = v.rot or {0,0,0,0}
    rot = quat(rot[1],rot[2],rot[3],rot[4])
    rot = rot:toTorqueQuat()
@/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/ge/spawn.lua
  local nodePositions = {}
  local vehRot = quat(veh:getClusterRotationSlow(veh:getRefNodeId()))
  local pos = cachedTransform and cachedTransform.pos or veh:getPosition()
  local rot = cachedTransform and cachedTransform.rot or quat(veh:getRotation())
  local boundingBox = OrientedBox3F()
  -- Find out the new position and rotation
  local originalRot = quat(initialBB:getMatrix():toQuatF())
  local newRot = quat(newBB:getMatrix():toQuatF())
  local originalRot = quat(initialBB:getMatrix():toQuatF())
  local newRot = quat(newBB:getMatrix():toQuatF())
  local diffRot = originalRot:inversed() * newRot
  -- TODO the rotation by 180 degrees needs to happen before the other rotation. The order might still be wrong in some places
  rot = quat(0,0,1,0) * rot -- rotate 180 degrees
  local activeVehicle = true
  if resetVehicle == nil then resetVehicle = true end
  rot = rot or quat(0,0,0,-1)
  rot = quat(0,0,1,0) * rot
  rot = rot or quat(0,0,0,-1)
  rot = quat(0,0,1,0) * rot
    options.pos = spawnPoint:getPosition()
    options.rot = quat(spawnPoint:getRotation()) * quat(0,0,1,0)
    player = core_vehicles.spawnNewVehicle(vehicleModel, options)
    options.pos = spawnPoint:getPosition()
    options.rot = quat(spawnPoint:getRotation()) * quat(0,0,1,0)
    player = core_vehicles.spawnNewVehicle(vehicleModel, options)
@/lua/ge/extensions/gameplay/crawl/general.lua
      if firstNode and firstNode.pos then
        local rot = firstNode.rotation or quat(0, 0, 0, 1)
        startingPosition = {
      local pos = startingPos.transform.position
      local rot = startingPos.transform.rotation or quat(0, 0, 0, 1)
@/lua/ge/extensions/editor/camPathEditor.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      M.currentPath.markers[currentMarkerIndex].rot = quat(rotation)
    else
    else
      M.currentPath.markers[currentMarkerIndex].rot = beginDragRotation * quat(rotation)
    end
    --marker.pos = marker.pos
    marker.rot = quat(marker.rot)
@/lua/ge/extensions/flowgraph/nodes/scene/camera/procedural/procCamPathPosRot.lua
    from.pos = vec3(self.pinIn.pos.value)
    from.rot = quat(self.pinIn.rot.value)
    from.time = duration
@/lua/ge/extensions/flowgraph/nodes/mission/ARunForLife.lua

      local rot = quat(0,0,0,0)
      if propsInfo[randomPropId] then
@/lua/common/mathlib.lua

-- Returns quat (-w) from self->v. Both vecs should be normalized
function LuaVec3:getRotationTo(toV)
function LuaQuat:__tostring()
  return string.format('quat(%.10g,%.10g,%.10g,%.10g)', numSer(self.x), numSer(self.y), numSer(self.z), numSer(self.w))
end
@/lua/ge/extensions/career/modules/vehiclePerformance.lua
      local spawnPoint = scenetree.findObject("skidpadSpawn")
      spawn.safeTeleport(vehicle, spawnPoint:getPosition(), quat(0,0,1,0) * spawnPoint:getRotation(), nil, nil, nil, true, false)
      return true
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/rallySuperCountdown.lua
  self.pos = vec3()
  self.rot = quat()
  self.startPosValid = false  -- Track if start position was successfully looked up
  self.pos = vec3()
  self.rot = quat()
  self.startPosValid = false
@/lua/ge/extensions/flowgraph/modules/prefabModule.lua
        pos = veh:getPosition(),
        rot = quat(veh:getRotation()),
        up = veh:getDirectionVectorUp()
      -- get current position and rotation
      vehicleTransforms[k] = {pos = veh:getPosition(), rot = quat(0, 0, 1, 0) * quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())}
    end
@/flowgraphEditor/Tower/customNodes/towerNode.lua

    local startPos, startRot = start:getPosition(), quat(start:getRotation())
    for _, id in ipairs(allChildrenIds) do
      local obj = scenetree.findObjectById(id)
      local pos, rot = obj:getPosition(), quat(obj:getRotation())
      local startToObj = (lastRot) * (pos-startPos)
    end
    local q = quat(goal:getRotation())
    lastPos = goal:getPosition() + q * vec3(0,4,0)
    lastPos = goal:getPosition() + q * vec3(0,4,0)
    lastRot = quat(goal:getRotation()) * quatFromEuler(0,0,-math.pi/2)
  end
@/lua/ge/extensions/editor/decalEditor.lua

    instance.normal = quat(rotation):__mul(vec3(0,0,1))
    instance.tangent = quat(rotation):__mul(vec3(1,0,0))
    instance.normal = quat(rotation):__mul(vec3(0,0,1))
    instance.tangent = quat(rotation):__mul(vec3(1,0,0))
  else
@/lua/ge/extensions/gameplay/rally/recce/drivelineRecording.lua
      vec3(obj.pos),
      quat(obj.quat),
      obj.ts
@/lua/ge/extensions/career/modules/playerDriving.lua
  local trailer = getObjectByID(args.trailerId)
  local vehRot = quat(0,0,1,0) * quat(vehicle:getRefNodeRotation())
  local vehBB = vehicle:getSpawnWorldOOBB()
  local trailer = getObjectByID(args.trailerId)
  local vehRot = quat(0,0,1,0) * quat(vehicle:getRefNodeRotation())
  local vehBB = vehicle:getSpawnWorldOOBB()
@/lua/ge/extensions/ui/apps/minimap/minimap.lua
local centerX, centerY -- center of the minimap in imgui coordinates
local camPos, camRot, camRotInverse = vec3(), quat(), quat() -- camera transform
local cameraLook = vec3()
local centerX, centerY -- center of the minimap in imgui coordinates
local camPos, camRot, camRotInverse = vec3(), quat(), quat() -- camera transform
local cameraLook = vec3()
local up = vec3(0,1,0)
local camRotInverse = quat()
local firstPass = true
@/lua/ge/extensions/gameplay/drift/stuntZones/nearPole.lua
  local config = "vehicles/delineator/stripes.pc"
  local options = {config = config, paint = nil, licenseText = nil, vehicleName = generateObjectNameForClass('BeamNGVehicle', 'object_'), pos = self.data.zoneData.pos, rot = quat(0,0,0,1)}
  local spawningOptions = sanitizeVehicleSpawnOptions(model, options)
@/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/gameplay/discover/discover_037.lua
        local vehs = {
          { vec3(-821.7966309,903.6448364,75.53855133), quat(3.139752468e-06,-1.053478079e-05,0.4958757203,0.8683934995), "unicycle", "vehicles/unicycle/with_mesh.pc" },
          { vec3(-810.0274048,909.8909912,75.03192139), quat(-0.001089688493,-0.003704504967,0.9999047143,-0.01325336309), "fullsize", "vehicles/fullsize/limo_official.pc" },
          { vec3(-821.7966309,903.6448364,75.53855133), quat(3.139752468e-06,-1.053478079e-05,0.4958757203,0.8683934995), "unicycle", "vehicles/unicycle/with_mesh.pc" },
          { vec3(-810.0274048,909.8909912,75.03192139), quat(-0.001089688493,-0.003704504967,0.9999047143,-0.01325336309), "fullsize", "vehicles/fullsize/limo_official.pc" },
        }

          { vec3(-393.538208,85.07393646,100.4414902), quat(0.003996261011,0.001331355885,-0.8466762199,0.5320917552), "hopper", "vehicles/hopper/sport_A.pc" },
          { vec3(-392.4162598,79.27086639,100.084465), quat(-0.0007308341831,-0.004185617448,0.9826823809,-0.1852492502), "fullsize", "vehicles/fullsize/lowrider.pc" },
          { vec3(-393.538208,85.07393646,100.4414902), quat(0.003996261011,0.001331355885,-0.8466762199,0.5320917552), "hopper", "vehicles/hopper/sport_A.pc" },
          { vec3(-392.4162598,79.27086639,100.084465), quat(-0.0007308341831,-0.004185617448,0.9826823809,-0.1852492502), "fullsize", "vehicles/fullsize/lowrider.pc" },

          { vec3(-460.0043945,110.3837967,99.99999237), quat(0,-0,1,-0), "large_cannon", "vehicles/large_cannon/standard.pc" },
          { vec3(-471.0322876,111.5633316,99.99999237), quat(5.743762875e-07,-5.464591496e-06,1.715435881e-07,1), "large_roller", "vehicles/large_roller/standard.pc" },
          { vec3(-460.0043945,110.3837967,99.99999237), quat(0,-0,1,-0), "large_cannon", "vehicles/large_cannon/standard.pc" },
          { vec3(-471.0322876,111.5633316,99.99999237), quat(5.743762875e-07,-5.464591496e-06,1.715435881e-07,1), "large_roller", "vehicles/large_roller/standard.pc" },
          { vec3(-439,-15.95985031,100), quat(1.525190219e-07,-1.723923542e-07,-0.7071049957,0.7071085666), "large_hamster_wheel", "vehicles/large_hamster_wheel/standard.pc" },
          { vec3(-471.0322876,111.5633316,99.99999237), quat(5.743762875e-07,-5.464591496e-06,1.715435881e-07,1), "large_roller", "vehicles/large_roller/standard.pc" },
          { vec3(-439,-15.95985031,100), quat(1.525190219e-07,-1.723923542e-07,-0.7071049957,0.7071085666), "large_hamster_wheel", "vehicles/large_hamster_wheel/standard.pc" },

          { vec3(-448,43.99998856,99.99998474), quat(-2.854423109e-06,-1.182347615e-06,0.9238819276,-0.38267765), "large_spinner", "vehicles/large_spinner/flail.pc" },

          { vec3(-460,32,100), quat(-0,0,0.9238795164,-0.3826834713), "large_spinner", "vehicles/large_spinner/base.pc", true },
          { vec3(-470,12.08457279,110.9995651), quat(0.5001355236,0.5010345638,0.4986913531,0.5001357399), "large_spinner", "vehicles/large_spinner/base.pc", true },
          { vec3(-460,32,100), quat(-0,0,0.9238795164,-0.3826834713), "large_spinner", "vehicles/large_spinner/base.pc", true },
          { vec3(-470,12.08457279,110.9995651), quat(0.5001355236,0.5010345638,0.4986913531,0.5001357399), "large_spinner", "vehicles/large_spinner/base.pc", true },

          { vec3(-439,68,100), quat(1.950982245e-06,1.950980785e-06,0.7071070457,0.7071065166), "spikestrip", "vehicles/spikestrip/flexr_dual.pc" },
          { vec3(-439,79,100), quat(1.950982245e-06,1.950980785e-06,0.7071070457,0.7071065166), "spikestrip", "vehicles/spikestrip/flexr_dual.pc" },
          { vec3(-439,68,100), quat(1.950982245e-06,1.950980785e-06,0.7071070457,0.7071065166), "spikestrip", "vehicles/spikestrip/flexr_dual.pc" },
          { vec3(-439,79,100), quat(1.950982245e-06,1.950980785e-06,0.7071070457,0.7071065166), "spikestrip", "vehicles/spikestrip/flexr_dual.pc" },

          { vec3(-422.999939,73.00011444,99.99913025), quat(-5.571546525e-05,-6.816663433e-05,0.9999999956,3.381670454e-05), "trampoline", "vehicles/trampoline/anchor.pc" },

          { vec3(-432,88.00015259,105.9998169), quat(0.4999864969,-0.5000118257,0.4999867948,0.5000148819), "large_spinner", "vehicles/large_spinner/small_dual.pc", true },
      local vehs = {
        {vec3(1082.018188,427.2434998,114.7162094), quat(-0.02628606277,-0.04700933289,-0.007957618196,0.998516821), "pickup", "vehicles/pickup/deserttruck_crawler_A.pc" },

        {vec3(1100,584,160), quat(0,0,0,1), "pressure_ball", "vehicles/pressule_ball/helium.pc.pc" },
        {vec3(1100,584,160), quat(0,0,0,1), "pigeon", "vehicles/pigeon/base.pc.pc" },
        {vec3(1100,584,160), quat(0,0,0,1), "pressure_ball", "vehicles/pressule_ball/helium.pc.pc" },
        {vec3(1100,584,160), quat(0,0,0,1), "pigeon", "vehicles/pigeon/base.pc.pc" },
      }
        local model, config = set[1], set[2]
        local options = {pos = pos, rot = quat(0,0,0,1), model = model, config = config}
        if i > 1 then
            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)
      local vehs = {
        { vec3(208.9507599,-58.5039711,100.1960449), quat(0.001559768738,0.0007141662238,-0.3119492118,0.9500972299), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(215.3587799,-65.03526306,100.1957703), quat(0.001210500138,0.001256510898,-0.6362022006,0.7715203924), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(208.9507599,-58.5039711,100.1960449), quat(0.001559768738,0.0007141662238,-0.3119492118,0.9500972299), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(215.3587799,-65.03526306,100.1957703), quat(0.001210500138,0.001256510898,-0.6362022006,0.7715203924), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(225.7114563,-69.6268158,100.1959534), quat(0.001570248627,0.0007085807929,-0.3077276251,0.9514729324), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(215.3587799,-65.03526306,100.1957703), quat(0.001210500138,0.001256510898,-0.6362022006,0.7715203924), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(225.7114563,-69.6268158,100.1959534), quat(0.001570248627,0.0007085807929,-0.3077276251,0.9514729324), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(229.7160492,-79.54701996,100.1958771), quat(0.001717891903,0.0002193109397,-0.01340812524,0.9999086073), "fullsize", "vehicles/fullsize/limo_derby.pc" }
        { vec3(225.7114563,-69.6268158,100.1959534), quat(0.001570248627,0.0007085807929,-0.3077276251,0.9514729324), "fullsize", "vehicles/fullsize/limo_derby.pc" },
        { vec3(229.7160492,-79.54701996,100.1958771), quat(0.001717891903,0.0002193109397,-0.01340812524,0.9999086073), "fullsize", "vehicles/fullsize/limo_derby.pc" }
      }
        {
        vec3(363.9958191,-197.4786835,77.9961319), quat(-0.0005543338439,0.003372357637,0.4714414284,0.8818907526), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(360.7849731,-200.7636414,78.07813263), quat(0.006742560331,-0.01062271526,0.8806311428,-0.4736353936), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
        vec3(363.9958191,-197.4786835,77.9961319), quat(-0.0005543338439,0.003372357637,0.4714414284,0.8818907526), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(360.7849731,-200.7636414,78.07813263), quat(0.006742560331,-0.01062271526,0.8806311428,-0.4736353936), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(367.0430603,-202.0362091,77.98976135), quat(-0.003238036801,0.0005231049422,0.4730052569,0.8810534992), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(360.7849731,-200.7636414,78.07813263), quat(0.006742560331,-0.01062271526,0.8806311428,-0.4736353936), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(367.0430603,-202.0362091,77.98976135), quat(-0.003238036801,0.0005231049422,0.4730052569,0.8810534992), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(364.9580688,-196.6944122,78.97259521), quat(-0.0001914897888,0.01949516246,-0.2922635234,0.9561390772), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(367.0430603,-202.0362091,77.98976135), quat(-0.003238036801,0.0005231049422,0.4730052569,0.8810534992), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(364.9580688,-196.6944122,78.97259521), quat(-0.0001914897888,0.01949516246,-0.2922635234,0.9561390772), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(363.5989685,-203.0787506,79.24938965), quat(0.00445194461,-0.01197569268,0.9570844328,0.2895274624), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(364.9580688,-196.6944122,78.97259521), quat(-0.0001914897888,0.01949516246,-0.2922635234,0.9561390772), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(363.5989685,-203.0787506,79.24938965), quat(0.00445194461,-0.01197569268,0.9570844328,0.2895274624), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(360.1609802,-199.8941803,79.29812622), quat(-0.03122464289,0.1275293849,-0.2935328995,0.9468894944), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(363.5989685,-203.0787506,79.24938965), quat(0.00445194461,-0.01197569268,0.9570844328,0.2895274624), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
      { vec3(360.1609802,-199.8941803,79.29812622), quat(-0.03122464289,0.1275293849,-0.2935328995,0.9468894944), "fullsize", "vehicles/fullsize/limo_luxe.pc" },
}
@/lua/ge/extensions/editor/missionEditor/startTrigger.lua
  if self.mission.startTrigger.type == 'coordinates' then
    transformHelper:set(vec3(self.mission.startTrigger.pos), quat(self.mission.startTrigger.rot or {0,0,0,1}), self.mission.startTrigger.radius)
  end
@/lua/ge/extensions/editor/sitesEditor/zones.lua
        local diff = self._prevVerticesPos[vertex.index] - centroid
        diff = diff:rotated(quat(rotation))
        vertex.pos = centroid + diff
      if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
        self.currentPlane.normal = quat(rotation) * vec3(0, 0, 1)
      else
      else
        self.currentPlane.normal = self.beginDragRotation * quat(rotation) * vec3(0, 0, 1)
      end
@/lua/ge/extensions/editor/gen/utils.lua
	core_camera.setPosition(0, vec3(acoord[1], acoord[2], acoord[3]))
	core_camera.setRotation(0, quat(acoord[4], acoord[5], acoord[6], acoord[7]))
end
@/lua/ge/extensions/editor/toolUtilities/geom.lua
local preRotQuats = {
  [0] = quat(0, 0, 0, 1), -- 0° (identity).
  [1] = quat(0, 0, 0.70710678, 0.70710678), -- 90°.
  [0] = quat(0, 0, 0, 1), -- 0° (identity).
  [1] = quat(0, 0, 0.70710678, 0.70710678), -- 90°.
  [2] = quat(0, 0, 1, 0), -- 180°.
  [1] = quat(0, 0, 0.70710678, 0.70710678), -- 90°.
  [2] = quat(0, 0, 1, 0), -- 180°.
  [3] = quat(0, 0, 0.70710678, -0.70710678), -- 270°.
  [2] = quat(0, 0, 1, 0), -- 180°.
  [3] = quat(0, 0, 0.70710678, -0.70710678), -- 270°.
}
local intersections, leftPts, rightPts = {}, {}, {}
local tmpQuat = quat()
local tmpPoint2I = Point2I(0, 0)
@/lua/ge/extensions/editor/dragRaceEditor/strips.lua
  local pos = vec3(waypoint.transform.position.x, waypoint.transform.position.y, waypoint.transform.position.z)
  local rot = quat(waypoint.transform.rotation.x, waypoint.transform.rotation.y, waypoint.transform.rotation.z, waypoint.transform.rotation.w)
  local pos = vec3(boundary.transform.position.x, boundary.transform.position.y, boundary.transform.position.z)
  local rot = quat(boundary.transform.rotation.x, boundary.transform.rotation.y, boundary.transform.rotation.z, boundary.transform.rotation.w)
      local pos = vec3(lane.boundary.transform.position.x, lane.boundary.transform.position.y, lane.boundary.transform.position.z)
      local rot = quat(lane.boundary.transform.rotation.x, lane.boundary.transform.rotation.y, lane.boundary.transform.rotation.z, lane.boundary.transform.rotation.w)
      local scl = vec3(lane.boundary.transform.scale.x, lane.boundary.transform.scale.y, lane.boundary.transform.scale.z)
@/lua/ge/extensions/gameplay/missions/proceduralMissionGenerators/busModeMissions.lua
        local rot = route.spawnLocation.rotAngAxisF or route.spawnLocation.rot
        mission.startTrigger.rot = route.spawnLocation.rotAngAxisF and quat(AngAxisF(rot.x, rot.y, rot.z, (rot.w * 3.1459) / 180.0 ):toQuatF()) or quat(rot)
        local rot = route.spawnLocation.rotAngAxisF or route.spawnLocation.rot
        mission.startTrigger.rot = route.spawnLocation.rotAngAxisF and quat(AngAxisF(rot.x, rot.y, rot.z, (rot.w * 3.1459) / 180.0 ):toQuatF()) or quat(rot)
@/lua/vehicle/recovery.lua
local camPos = vec3()
local camRot = quat()
local function setRecoveryPoint(recPoint, resetVehicle, moveTraffic)
      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
local oobb = {vec3(), vec3(), vec3(), vec3()}
local rot = quat()
local nodeRenderPositions = {}
@/lua/ge/extensions/flowgraph/nodes/events/customizedTriggerBox.lua
      pos = vec3(self.pinIn.position.value or {0,0,0}),
      rot = quat(self.pinIn.rotation.value or {0,0,0,0})
    }
@/lua/ge/extensions/ui/apps/minimap/vehicles.lua

local rot = quat()
local function drawPlayer(dtReal, dtSim)
@/lua/ge/extensions/editor/decalSpline/populate.lua
local components, cycle = {}, {}
local jitterQuat, rot = quat(), quat()
local tmpTan = vec3()
local components, cycle = {}, {}
local jitterQuat, rot = quat(), quat()
local tmpTan = vec3()
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/rallyMoveVehicleTo.lua
    local targetPos = vec3(self.pinIn.pos.value)
    local targetRot = quat(self.pinIn.rot.value)
@/lua/ge/extensions/core/cameraModes/unicycle.lua
local function rotateEuler(x, y, z, q)
  q = q or quat()
  q = quatFromEuler(0, z, 0) * q
    log("W", "", "Unicycle camera cannot provide a position or a rotation: "..dumps(self.pos).." / "..dumps(self.rotVec))
    return vec3(), quat()
  end
@/lua/ge/extensions/core/cameraModes/orbit.lua
  self.smoothedPitchOffset = newTemporalSigmoidSmoothing(2, 2, 2, 2)
  self.dynamicPitchQuat = quat()
  self.targetCenter = vec3(0, 0, 0)
    -- rotate targetPos around bbCenter by the inverse of the vehicle rotation
    local vehRot = quat(0,0,1,0) * quat(veh:getClusterRotationSlow(veh:getRefNodeId()))
    local localTargetPos = vehRot:inversed() * (targetPos - bbCenter)
    -- rotate targetPos around bbCenter by the inverse of the vehicle rotation
    local vehRot = quat(0,0,1,0) * quat(veh:getClusterRotationSlow(veh:getRefNodeId()))
    local localTargetPos = vehRot:inversed() * (targetPos - bbCenter)

local resultPos, resultRot, tempQuatB = vec3(), quat(), quat()

local resultPos, resultRot, tempQuatB = vec3(), quat(), quat()
@/lua/ge/extensions/gameplay/rally/recceApp.lua
  if playerVehicle then
    spawn.safeTeleport(playerVehicle, vec3(pos), quat(rot))
  end
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficMoveGroup.lua
      local pos = self.pinIn.startPos.value and vec3(self.pinIn.startPos.value)
      local rot = self.pinIn.startRot.value and quat(self.pinIn.startRot.value)
@/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/ge/extensions/editor/crawlEditor/presets.lua
      pos = vec3(n.position or {0,0,0}),
      rot = quat(n.rotation or {0,0,0,1}),
      radius = n.radius or 6.0,
        pos = vec3(n.position or {0,0,0}),
        rot = quat(n.rotation or {0,0,0,1}),
        radius = n.radius or 6.0,
@/lua/ge/extensions/core/cameraModes/driver.lua

local qtmp = quat()
local function rotateEuler(x, y, z, q)
local function rotateEuler(x, y, z, q)
  q = q or quat()
  qtmp:setFromEuler(0, z, 0)
local left, ref, back = vec3(), vec3(), vec3()
local carLeft, carFwd, carUp, carRot, carRotInverse = vec3(), vec3(), vec3(), quat(), quat()
local nodePos = vec3()
local left, ref, back = vec3(), vec3(), vec3()
local carLeft, carFwd, carUp, carRot, carRotInverse = vec3(), vec3(), vec3(), quat(), quat()
local nodePos = vec3()
local nodePos = vec3()
local camUp, camRot = vec3(), quat()
local camPosLocal, combinedPos, rotationOffset = vec3(), vec3(), vec3()
@/lua/ge/extensions/gameplay/speedTraps.lua
      -- TODO could also make a cache for the trigger direction
      local triggerRotation = quat(triggerObj:getRotation())
      triggerDir:setRotate(triggerRotation, yVec)
@/lua/ge/extensions/flowgraph/nodes/scene/spawnTSStatic.lua
  local rot = self.pinIn.rotation.value or {0,0,0,0}
  rot = quat(rot[1],rot[2],rot[3],rot[4])
  rot = rot:toTorqueQuat()
  rot = self.pinIn.rotation.value or {0,0,0,0}
  rot = quat(rot[1],rot[2],rot[3],rot[4])
@/lua/ge/extensions/flowgraph/nodes/scene/spawnLight.lua
  local rot = self.pinIn.rotation.value or {0,0,0,0}
  rot = quat(rot[1],rot[2],rot[3],rot[4])
  rot = rot:toTorqueQuat()
    local rot = self.pinIn.rotation.value or {0,0,0,0}
    rot = quat(rot[1],rot[2],rot[3],rot[4])
    rot = rot:toTorqueQuat()
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veLightsDebug.lua
      local lightPos = worldMat:getColumn(3) + vEditor.vehiclePos
      local qDir = quat(worldMat:toQuatF())
      local dirVec = qDir * vec3(0, lightRange, 0)
@/lua/ge/extensions/gameplay/markers/crawlMarker.lua
local vecOne = vec3(1,1,1)
local quatZero = quat(0,0,0,0)
local vecX = vec3(1,0,0)
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veStaticRenderView.lua
      pos = mainRVData.pos or vec3(0,0,0),
      rot = mainRVData.rot and quat(mainRVData.rot) or quatFromDir(vec3(0,1,0), unitVecs[3]),
      gridRot = mainRVData.gridRot and quat(mainRVData.gridRot) or quatFromAxisAngle(vec3(1,0,0), math.rad(90)),
      rot = mainRVData.rot and quat(mainRVData.rot) or quatFromDir(vec3(0,1,0), unitVecs[3]),
      gridRot = mainRVData.gridRot and quat(mainRVData.gridRot) or quatFromAxisAngle(vec3(1,0,0), math.rad(90)),
      ortho = im.BoolPtr(mainRVData.ortho or false),
@/lua/ge/extensions/gameplay/drift/stuntZones/hitPole.lua
  local config = "vehicles/delineator/pole.pc"
  local options = {config = config, paint = nil, licenseText = nil, vehicleName = generateObjectNameForClass('BeamNGVehicle', 'object_'), pos = self.data.zoneData.pos, rot = quat(0,0,0,1)}
  local spawningOptions = sanitizeVehicleSpawnOptions(model, options)
@/lua/ge/extensions/gameplay/markerInteraction.lua
  updateData.camPos:set(core_camera.getPositionXYZ())
  updateData.camRot = updateData.camRot or quat()
  updateData.camRot:set(core_camera.getQuatXYZW())
@/lua/ge/extensions/editor/assemblySpline/populate.lua
local maxMolecules, maxRigidMeshes = 0, 0
local jitterQuat, finalRot, rootRot = quat(), quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local maxMolecules, maxRigidMeshes = 0, 0
local jitterQuat, finalRot, rootRot = quat(), quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local maxMolecules, maxRigidMeshes = 0, 0
local jitterQuat, finalRot, rootRot = quat(), quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local jitterQuat, finalRot, rootRot = quat(), quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local directionRot, rollRot = quat(), quat()
local jitterQuat, finalRot, rootRot = quat(), quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local directionRot, rollRot = quat(), quat()
local jitterQuat, finalRot, rootRot = quat(), quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local directionRot, rollRot = quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local directionRot, rollRot = quat(), quat()
local freedomJitterQuat, axisJitterQuat = quat(), quat()
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local directionRot, rollRot = quat(), quat()
local freedomJitterQuat, axisJitterQuat = quat(), quat()
local directionRot, rollRot = quat(), quat()
local freedomJitterQuat, axisJitterQuat = quat(), quat()
local finalPos, tmpScale, bridgeInternalDir = vec3(), vec3(), vec3()
local directionRot, rollRot = quat(), quat()
local freedomJitterQuat, axisJitterQuat = quat(), quat()
local finalPos, tmpScale, bridgeInternalDir = vec3(), vec3(), vec3()
      translationArray[i] = translationArray[i] or vec3() -- Create reusable vec3 and quat objects, as and when we need them.
      rotationArray[i] = rotationArray[i] or quat()
    end
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veFlexbodyDebug.lua
local vehPos = vec3()
local rotInv = quat()
local localVertPos = vec3()
@/lua/ge/extensions/editor/objectTool.lua
    local pos = veh:getPosition()
    local rot = quat(veh:getRefNodeRotation())
    local scl = 1
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalSingle.lua
    position = vec3(self.pinIn.pos.value),
    forwardVec = quat(self.pinIn.rot.value) * vec3(0, 1, 0),
    color = ColorF(unpack(clr)),
@/lua/ge/extensions/editor/crawlEditor/missionPortTool.lua
      -- Calculate rotation pointing to first checkpoint
      local rotation = quat(0, 0, 0, 1) -- Default identity rotation
      if path and path.nodes and #path.nodes > 0 then
@/lua/ge/extensions/flowgraph/nodes/scene/raceLineParking.lua
  --unit vectors in target space
  local rot = quat(self.pinIn.rotation.value)
  local xn, yn = rot * vec3(1,0,0), rot * vec3(0,-1,0)
  im.BeginChild1("parkingPreview", childSize, true, im.WindowFlags_NoScrollbar+im.WindowFlags_NoScrollWithMouse)
  local rot = quat(self.pinIn.rotation.value)
  dl = im.GetWindowDrawList()
  local tr = self.pinIn.rotation.value or {0,0,0,0}
  tr = quat(tr[1],tr[2],tr[3],tr[4])
  local yVec = tr*vec3(0,1,0)
  --debugDrawer:drawSphere((pos), 2, ColorF(clr[1],clr[2],clr[3],shapeAlpha))
  local rot = quat(self.pinIn.rotation.value)
  local x, y, z = rot * vec3(self.pinIn.scale.value[1],0,0), rot * vec3(0,self.pinIn.scale.value[2],0), rot * vec3(0,0,1)
@/lua/ge/extensions/core/levels.lua
      options.pos = spawnPoint:getPosition()
      options.rot = quat(spawnPoint:getRotation()) * quat(0,0,1,0)
    end
      options.pos = spawnPoint:getPosition()
      options.rot = quat(spawnPoint:getRotation()) * quat(0,0,1,0)
    end
  if spawnPoint then
    return spawnPoint:getPosition(), quat(0,0,1,0) * spawnPoint:getRotation()
  end
@/lua/ge/extensions/gameplay/discover/newPlayerExperience.lua
        local vehs = {
          { vec3(189.2717133,-375.0607605,194.2601013), quat(0,0,0.7038784663,0.710320424), "vivace", "vehicles/vivace/vivace_230S_DCT.pc" },
        }
        local vehs = {
          { vec3(-1270.672607,-79.58815765,121.6928101), quat(-0.02186222721,0.0009984752378,0.7260386731,0.6873055297), "pickup", "vehicles/pickup/deserttruck_crawler_A.pc" },
          { vec3(-1273.283325,-83.95053864,121.7670593), quat(0.01025221426,-0.02570453177,0.8734151899,0.4861893409), "racetruck", "vehicles/racetruck/tt2_spec.pc" },
          { vec3(-1270.672607,-79.58815765,121.6928101), quat(-0.02186222721,0.0009984752378,0.7260386731,0.6873055297), "pickup", "vehicles/pickup/deserttruck_crawler_A.pc" },
          { vec3(-1273.283325,-83.95053864,121.7670593), quat(0.01025221426,-0.02570453177,0.8734151899,0.4861893409), "racetruck", "vehicles/racetruck/tt2_spec.pc" },
          --{ vec3(-574.324,-404.611,132.277), quat(-0.004031204019,-0.03853915852,-0.4529694097,0.8906835558), "rockbouncer", "vehicles/rockbouncer/rock_crawler.pc" },
          { vec3(-1273.283325,-83.95053864,121.7670593), quat(0.01025221426,-0.02570453177,0.8734151899,0.4861893409), "racetruck", "vehicles/racetruck/tt2_spec.pc" },
          --{ vec3(-574.324,-404.611,132.277), quat(-0.004031204019,-0.03853915852,-0.4529694097,0.8906835558), "rockbouncer", "vehicles/rockbouncer/rock_crawler.pc" },
          --{ vec3(-574.530,-404.151,132.347), quat(-0.004031204019,-0.03853915852,-0.4529694097,0.8906835558), "roamer", "vehicles/roamer/adventure.pc" },
          --{ vec3(-574.324,-404.611,132.277), quat(-0.004031204019,-0.03853915852,-0.4529694097,0.8906835558), "rockbouncer", "vehicles/rockbouncer/rock_crawler.pc" },
          --{ vec3(-574.530,-404.151,132.347), quat(-0.004031204019,-0.03853915852,-0.4529694097,0.8906835558), "roamer", "vehicles/roamer/adventure.pc" },
          { vec3(-1272.337158,-74.02603149,121.4899216), quat(-0.007339913527,0.003215354856,0.4619465262,0.886871577), "utv", "vehicles/utv/plus.pc" },
          --{ vec3(-574.530,-404.151,132.347), quat(-0.004031204019,-0.03853915852,-0.4529694097,0.8906835558), "roamer", "vehicles/roamer/adventure.pc" },
          { vec3(-1272.337158,-74.02603149,121.4899216), quat(-0.007339913527,0.003215354856,0.4619465262,0.886871577), "utv", "vehicles/utv/plus.pc" },
        }
        local vehs = {
          { vec3(-455.5000305,374.7161865,25.23128128), quat(6.270791814e-05,0.0005269290997,0.9929929419,-0.1181724831), vehChoices[1][1], vehChoices[1][2] },
          { vec3(-446.6066589,361.14505,25.16402245), quat(3.034665428e-05,0.0002429556407,0.9922893041,-0.123943039), vehChoices[2][1], vehChoices[2][2] },
          { vec3(-455.5000305,374.7161865,25.23128128), quat(6.270791814e-05,0.0005269290997,0.9929929419,-0.1181724831), vehChoices[1][1], vehChoices[1][2] },
          { vec3(-446.6066589,361.14505,25.16402245), quat(3.034665428e-05,0.0002429556407,0.9922893041,-0.123943039), vehChoices[2][1], vehChoices[2][2] },
          { vec3(-438.1695862,346.2776184,25.1306839), quat(-0.0001477062226,-0.001071917166,0.9906386067,-0.1365063375), vehChoices[3][1], vehChoices[3][2] },
          { vec3(-446.6066589,361.14505,25.16402245), quat(3.034665428e-05,0.0002429556407,0.9922893041,-0.123943039), vehChoices[2][1], vehChoices[2][2] },
          { vec3(-438.1695862,346.2776184,25.1306839), quat(-0.0001477062226,-0.001071917166,0.9906386067,-0.1365063375), vehChoices[3][1], vehChoices[3][2] },
          { vec3(-429.155426,333.7767334,25.10681915), quat(-8.45975059e-05,-0.0007574605165,0.9938206113,-0.1109955479), vehChoices[4][1], vehChoices[4][2] },
          { vec3(-438.1695862,346.2776184,25.1306839), quat(-0.0001477062226,-0.001071917166,0.9906386067,-0.1365063375), vehChoices[3][1], vehChoices[3][2] },
          { vec3(-429.155426,333.7767334,25.10681915), quat(-8.45975059e-05,-0.0007574605165,0.9938206113,-0.1109955479), vehChoices[4][1], vehChoices[4][2] },
          { vec3(-420.4411316,319.9455872,25.14068985), quat(0,-0,0.9944942508,-0.10479115), vehChoices[5][1], vehChoices[5][2] },
          { vec3(-429.155426,333.7767334,25.10681915), quat(-8.45975059e-05,-0.0007574605165,0.9938206113,-0.1109955479), vehChoices[4][1], vehChoices[4][2] },
          { vec3(-420.4411316,319.9455872,25.14068985), quat(0,-0,0.9944942508,-0.10479115), vehChoices[5][1], vehChoices[5][2] },
        }
        local vehs = {
          { vec3(-143.3728027,83.48352814,35.11228561), quat(-0.004508387994,0.0001588892785,0.03522081038,0.999369373), "van", "vehicles/van/h25_worker.pc" },
          { vec3(-171.8866425,127.8188705,34.96841812), quat(0.02066615241,-0.008679200679,0.387113079,0.9217597548), "cannon", "vehicles/cannon/cannon.pc" },
          { vec3(-143.3728027,83.48352814,35.11228561), quat(-0.004508387994,0.0001588892785,0.03522081038,0.999369373), "van", "vehicles/van/h25_worker.pc" },
          { vec3(-171.8866425,127.8188705,34.96841812), quat(0.02066615241,-0.008679200679,0.387113079,0.9217597548), "cannon", "vehicles/cannon/cannon.pc" },
          { vec3(-158.3771362,143.2392883,35.22563553), quat(-0.001331452813,-0.001542004732,-0.7568890667,0.6535401978), "caravan", "vehicles/caravan/default.pc" },
          { vec3(-171.8866425,127.8188705,34.96841812), quat(0.02066615241,-0.008679200679,0.387113079,0.9217597548), "cannon", "vehicles/cannon/cannon.pc" },
          { vec3(-158.3771362,143.2392883,35.22563553), quat(-0.001331452813,-0.001542004732,-0.7568890667,0.6535401978), "caravan", "vehicles/caravan/default.pc" },
          { vec3(-144.6221008,157.9118805,35.99853516), quat(-1.780725942e-06,-5.771057474e-06,0.9555452647,-0.2948444456), "fridge", "vehicles/fridge/standard.pc" },
          { vec3(-158.3771362,143.2392883,35.22563553), quat(-0.001331452813,-0.001542004732,-0.7568890667,0.6535401978), "caravan", "vehicles/caravan/default.pc" },
          { vec3(-144.6221008,157.9118805,35.99853516), quat(-1.780725942e-06,-5.771057474e-06,0.9555452647,-0.2948444456), "fridge", "vehicles/fridge/standard.pc" },
          { vec3(-150.1018219,158.1330872,36.21847534), quat(1.766898486e-06,-1.028953559e-05,0.985574711,0.1692409196), "porta_potty", "vehicles/porta_potty/default.pc" },
          { vec3(-144.6221008,157.9118805,35.99853516), quat(-1.780725942e-06,-5.771057474e-06,0.9555452647,-0.2948444456), "fridge", "vehicles/fridge/standard.pc" },
          { vec3(-150.1018219,158.1330872,36.21847534), quat(1.766898486e-06,-1.028953559e-05,0.985574711,0.1692409196), "porta_potty", "vehicles/porta_potty/default.pc" },
          { vec3(-146.2707825,159.0570221,36.05832672), quat(0.0001382667643,1.267887785e-06,-0.009169481016,0.9999579499), "piano", "vehicles/piano/standard.pc" },
          { vec3(-150.1018219,158.1330872,36.21847534), quat(1.766898486e-06,-1.028953559e-05,0.985574711,0.1692409196), "porta_potty", "vehicles/porta_potty/default.pc" },
          { vec3(-146.2707825,159.0570221,36.05832672), quat(0.0001382667643,1.267887785e-06,-0.009169481016,0.9999579499), "piano", "vehicles/piano/standard.pc" },
          { vec3(-138.2297058,102.0587769,34.79919434), quat(-0.0001324840225,0.0001432935834,0.7342591574,0.6788692449), "tv", "vehicles/tv/25inch.pc" },
          { vec3(-146.2707825,159.0570221,36.05832672), quat(0.0001382667643,1.267887785e-06,-0.009169481016,0.9999579499), "piano", "vehicles/piano/standard.pc" },
          { vec3(-138.2297058,102.0587769,34.79919434), quat(-0.0001324840225,0.0001432935834,0.7342591574,0.6788692449), "tv", "vehicles/tv/25inch.pc" },
          { vec3(-136.6850739,104.0551834,34.89838409), quat(-1.370823688e-06,-2.668151342e-06,0.8894732678,-0.4569872053), "couch", "vehicles/couch/couch_free.pc" },
          { vec3(-138.2297058,102.0587769,34.79919434), quat(-0.0001324840225,0.0001432935834,0.7342591574,0.6788692449), "tv", "vehicles/tv/25inch.pc" },
          { vec3(-136.6850739,104.0551834,34.89838409), quat(-1.370823688e-06,-2.668151342e-06,0.8894732678,-0.4569872053), "couch", "vehicles/couch/couch_free.pc" },
          { vec3(-135.8791656,101.8557205,34.79919052), quat(0.0002344426654,0.0001473668705,-0.5321790558,0.8466317829), "couch", "vehicles/couch/armchair_free.pc" },
          { vec3(-136.6850739,104.0551834,34.89838409), quat(-1.370823688e-06,-2.668151342e-06,0.8894732678,-0.4569872053), "couch", "vehicles/couch/couch_free.pc" },
          { vec3(-135.8791656,101.8557205,34.79919052), quat(0.0002344426654,0.0001473668705,-0.5321790558,0.8466317829), "couch", "vehicles/couch/armchair_free.pc" },
          { vec3(-135.1573334,102.8125229,34.79919434), quat(4.743933507e-05,1.696156212e-05,-0.3366698313,0.94162276), "barrels", "vehicles/barrels/empty.pc" },
          { vec3(-135.8791656,101.8557205,34.79919052), quat(0.0002344426654,0.0001473668705,-0.5321790558,0.8466317829), "couch", "vehicles/couch/armchair_free.pc" },
          { vec3(-135.1573334,102.8125229,34.79919434), quat(4.743933507e-05,1.696156212e-05,-0.3366698313,0.94162276), "barrels", "vehicles/barrels/empty.pc" },
          { vec3(-131.6051788,157.0005493,36.81754684), quat(0.0001472245881,0.01930025774,0.9997846345,-0.007626472298), "steel_coil", "vehicles/steel_coil/20ton.pc" },
          { vec3(-135.1573334,102.8125229,34.79919434), quat(4.743933507e-05,1.696156212e-05,-0.3366698313,0.94162276), "barrels", "vehicles/barrels/empty.pc" },
          { vec3(-131.6051788,157.0005493,36.81754684), quat(0.0001472245881,0.01930025774,0.9997846345,-0.007626472298), "steel_coil", "vehicles/steel_coil/20ton.pc" },
          { vec3(-131.9969635,153.5990143,35.00673676), quat(-2.599318111e-05,-0.003242814254,0.9999626183,-0.008015324778), "pigeon", "vehicles/pigeon/base.pc" }
          { vec3(-131.6051788,157.0005493,36.81754684), quat(0.0001472245881,0.01930025774,0.9997846345,-0.007626472298), "steel_coil", "vehicles/steel_coil/20ton.pc" },
          { vec3(-131.9969635,153.5990143,35.00673676), quat(-2.599318111e-05,-0.003242814254,0.9999626183,-0.008015324778), "pigeon", "vehicles/pigeon/base.pc" }
        }
        local vehs = {
          { vec3(-926.2694092,-530.4829712,105.0409012), quat(0.02295934544,0.03978534072,0.5222144473,0.8515762245), "us_semi", "vehicles/us_semi/t82_ramplow.pc" },
        }
@/lua/ge/extensions/flowgraph/nodes/environment/planet.lua
  pos = pos or vec3(0,0,0)
  rot = rot or quat(0,0,0,0)
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/vePropTransformer.lua
  lastPropBaseRotationGlobal = vec3(),
  lastPropBaseRotationGlobalQuat = quat(),
  axisGizmo = {
  state.axisGizmo.startPos = editor.getAxisGizmoTransform():inverse():getColumn(3)
  state.axisGizmo.startRot = quat(editor.getAxisGizmoTransform():toQuatF())

  local rot = quat(editor.getAxisGizmoTransform():toQuatF())
  local deltaRot = rot * state.axisGizmo.startRot:inversed()
    local lightPos = worldMat:getColumn(3) + vEditor.vehiclePos
    local qDir = quat(worldMat:toQuatF())
    local dirVec = qDir * vec3(0, lightRange, 0)
@/lua/ge/extensions/editor/perfProfiler.lua
    s.pos = vec3(s.pos)
    s.rot = quat(s.rot)
  end
@/lua/ge/extensions/editor/api/gizmo.lua
      rotation:setFromMatrix(objectTransform)
      objectRotations[index] = quat(rotation)
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/vehicleStoppedNearPos.lua
-- local wCenter, wPos = vec3(), vec3()
local vehPos, vehRot, vehVel = vec3(), quat(), vec3()
@/lua/ge/extensions/editor/barriersEditor.lua
            local pos = vec3(obj:getPosition())
            pos = pos + quat(obj:getRotation())*vec3(0,0,0.5)
            table.insert(objects,pos)
@/lua/ge/extensions/core/cameraModes/autopoint.lua
  data.res.targetPos:setAdd(offset:toBase(nx, ny, nz))
  data.res.rot = data.res.rot or quat()
  data.res.rot:set(quatFromDir((data.res.targetPos - data.res.pos):normalized()))
@/lua/ge/extensions/gameplay/rally/cameraPathPlayer.lua
      pos = vec3(markerData.pos.x, markerData.pos.y, markerData.pos.z),
      rot = quat(markerData.rot.x, markerData.rot.y, markerData.rot.z, markerData.rot.w),
      time = markerData.time,
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleMapData.lua
local vehId, vehicleData
local vehQuat = quat()
@/lua/ge/extensions/editor/sceneView.lua
        if focusObj then
          focusRot = quat(focusObj:getRefNodeRotation())
          focusPos = focusObj:getPosition() + focusRot * view.dragOffset
@/lua/ge/extensions/editor/dragRaceEditor/utils.lua
  local pos = vec3(transform.position.x, transform.position.y, transform.position.z)
  local rot = quat(transform.rotation.x, transform.rotation.y, transform.rotation.z, transform.rotation.w)
  local scl = vec3(transform.scale.x, transform.scale.y, transform.scale.z)
@/lua/ge/extensions/gameplay/traffic.lua
  else
    rot = rot * quat(0, 0, 1, 0)
    obj:setPositionRotation(pos.x, pos.y, pos.z, rot.x, rot.y, rot.z, rot.w)
@/lua/ge/extensions/gameplay/missions/missionTypes/editorHelper.lua
  elem.defaultPos = valueOptions.defaultPos or vec3()
  elem.defaultRot = valueOptions.defaultRot or quat(0,0,0,1)
local function boolSetMission(e, mtd) if mtd[e.fieldName] == nil then e.ptr[0] = e.defaultValue else e.ptr[0] = mtd[e.fieldName] end end
local function transformSetMission(e, mtd) e.transform:set(vec3(mtd[e.fieldNamePos] or e.defaultPos), quat(mtd[e.fieldNameRot] or e.defaultRot), e.oneDimScale and (mtd[e.fieldNameScl] or e.defaultScl) or (vec3(mtd[e.fieldNameScl] or e.defaultScl))) end
local function modelConfigSetMission(e, mtd) e.mc.model = mtd[e.fieldNameModel] or e.defaultModel e.mc.config = mtd[e.fieldNameConfig] or e.defaultConfig e.mc.configPath = mtd[e.fieldNameConfigPath] or e.defaultConfigPath ui_flowgraph_editor.vehicleSelectorRefresh(e.mc) end
@/lua/ge/extensions/core/vehicles.lua
    if localOptions.keepOtherVehRotation then
      localOptions.rot = quat(0,0,1,0) * quat(veh:getRefNodeRotation())
    end
    if localOptions.keepOtherVehRotation then
      localOptions.rot = quat(0,0,1,0) * quat(veh:getRefNodeRotation())
    end
@/lua/ge/extensions/editor/drivePathEditor/splineMgr.lua
local tmp1 = vec3()
local tmpRot = quat()
      if not cachedVehiclePoses[vehicle.vid] then
        cachedVehiclePoses[vehicle.vid] = { pos = vec3(veh:getPosition()), rot = quat(veh:getRotation()) }
      end
      if not cachedVehiclePoses[vehicle.vid] then
        cachedVehiclePoses[vehicle.vid] = { pos = vec3(veh:getPosition()), rot = quat(veh:getRotation()) }
      end
@/lua/ge/extensions/editor/crawlEditor/boundaries.lua
  self._prevVerticesPos = {}
  self.beginDragRotation = quat(1, 0, 0, 0)
  self.snapToTerrain = true
        local diff = self._prevVerticesPos[vertex.index] - centroid
        diff = diff:rotated(quat(rotation))
        local newPos = centroid + diff
      if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
        self.currentPlane.normal = quat(rotation) * vec3(0, 0, 1)
      else
      else
        self.currentPlane.normal = self.beginDragRotation * quat(rotation) * vec3(0, 0, 1)
      end
@/lua/ge/extensions/editor/forestEditor.lua
                  local normal = vec3(rayCastRes.norm)
                  local rot = quat(rotation) * vec3(0,0,1):getRotationTo(normal)
                  local trans = QuatF(rot.x, rot.y, rot.z, rot.w):getMatrix()
@/lua/ge/extensions/tech/pythonExport.lua
  local cmd = [[
    local rot = quat(obj:getRotation())
    local data = { rot = rot }
@/lua/ge/extensions/util/showroom.lua
local function getPosRot()
  return localToWorld(vec3(0,0,0)), quat(0,0,0,1)
end
  veh:autoplace(false)
  --spawn.safeTeleport(veh, localToWorld(vec3(0,0,0)), quat(0,0,0,1))
end
@/lua/ge/extensions/core/cameraModes/trackir.lua
local function rotateEuler(x, y, z, q)
  q = q or quat()
  q = quatFromEuler(0, 0, x) * q
@/lua/ge/extensions/gameplay/markers/bigmapMarker.lua
local vecZero = vec3(0,0,0)
local camQuat = quat()
local camUp = vec3()
@/lua/ge/extensions/editor/meshSpline/populate.lua
local componentNames, componentProbabilities = {}, {}
local jitterQuat, rot, tmpRot1 = quat(), quat(), quat()
local tmpPos, tmpTan, tmpBinormal, tmpVec1 = vec3(), vec3(), vec3(), vec3()
local componentNames, componentProbabilities = {}, {}
local jitterQuat, rot, tmpRot1 = quat(), quat(), quat()
local tmpPos, tmpTan, tmpBinormal, tmpVec1 = vec3(), vec3(), vec3(), vec3()
local componentNames, componentProbabilities = {}, {}
local jitterQuat, rot, tmpRot1 = quat(), quat(), quat()
local tmpPos, tmpTan, tmpBinormal, tmpVec1 = vec3(), vec3(), vec3(), vec3()
@/lua/ge/extensions/editor/sensorConfigurationEditor.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      local q = quat(q2)
      local dir, up = q:toDirUp()
    else
      local q = beginDragRotation * quat(q2)
      local dir, up = q:toDirUp()
@/lua/ge/extensions/flowgraph/nodes/mission/knockAwayCheck.lua
        pos = veh:getPosition(),
        rot = quat(veh:getRotation()),
        up = veh:getDirectionVectorUp()
@/lua/ge/extensions/editor/api/object.lua
      initialObjectRot:setFromMatrix(initialTransformations[i])
      initialObjectRot = quat(initialObjectRot)
      initialGizmoRot:setFromMatrix(initialGizmoTransform)
      initialGizmoRot = quat(initialGizmoRot)
      local inverseGizmoRot = initialGizmoRot:inversed()
      currentGizmoRot:setFromMatrix(gizmoTransform)
      currentGizmoRot = quat(currentGizmoRot)
      local diffRot = currentGizmoRot:__div(initialGizmoRot)
      rot:setFromMatrix(editor.getAxisGizmoTransform())
      offset = quat(rot):inversed() * offset
      offset.x = offset.x * adjustedScale.x
      offset.z = offset.z * adjustedScale.z
      offset = quat(rot) * offset
@/lua/ge/extensions/gameplay/drag/saveSystem.lua
        for _, waypoint in ipairs(lane.waypoints) do
          local rot = quat(waypoint.transform.rotation.x, waypoint.transform.rotation.y, waypoint.transform.rotation.z, waypoint.transform.rotation.w)
          local scl = vec3(waypoint.transform.scale.x, waypoint.transform.scale.y, waypoint.transform.scale.z)
            position = vec3(lane.boundary.transform.position.x, lane.boundary.transform.position.y, lane.boundary.transform.position.z),
            rotation = quat(lane.boundary.transform.rotation.x, lane.boundary.transform.rotation.y, lane.boundary.transform.rotation.z, lane.boundary.transform.rotation.w),
            scale = vec3(lane.boundary.transform.scale.x, lane.boundary.transform.scale.y, lane.boundary.transform.scale.z),
              pos = vec3(0, 0, 0),
              rot = quat(0, 0, 0, 1),
              scl = vec3(1, 1, 1)
@/lua/ge/extensions/gameplay/race/path.lua
      if cp:getField('directionalWaypoint',0) == '1' then
        pn:setNormal(quat(cp:getRotation())*vec3(1,0,0))
      else
          if wp:getField('directionalWaypoint',0) == '1' then
             rot = quat(wp:getRotation())*vec3(1,0,0)
          end
        if wp:getField('directionalWaypoint',0) == '1' then
           rot = quat(wp:getRotation())*vec3(1,0,0)
        end
    if spawnObj ~= nil then
      local rot = quat(spawnObj:getRotation())* quat(0,0,1,0)
      local x, y, z = rot * vec3(1,0,0), rot * vec3(0,1,0), rot * vec3(0,0,1)
    if spawnObj ~= nil then
      local rot = quat(spawnObj:getRotation())* quat(0,0,1,0)
      local x, y, z = rot * vec3(1,0,0), rot * vec3(0,1,0), rot * vec3(0,0,1)
@/lua/ge/extensions/gameplay/police.lua
  local transforms = {}
  local newQuat = quat()
      tempPos:setAddXYZ(x, y, z) -- offset adjustment
      table.insert(transforms, {pos = vec3(tempPos), rot = quat(newQuat)})
    end
@/lua/ge/extensions/scenario/quickRace.lua
  local pos = vec3()
  local rot = quat()
  if scenario.track.raceFile then
      pos = vec3(spawnObj:getPosition())
      rot = quat(spawnObj:getRotation())
    else
@/lua/ge/extensions/tech/techCore.lua
  pos = vec3(pos)
  rot = quat(rot):toTorqueQuat()
  if request['rot'] ~= nil then
    rot = quat(request['rot'][1], request['rot'][2], request['rot'][3], request['rot'][4])
  end
  elseif reset and rot == nil then
    local vehRot = quat(veh:getClusterRotationSlow(veh:getRefNodeId()))
    veh:setPositionRotation(request['pos'][1], request['pos'][2], request['pos'][3], vehRot.x, vehRot.y, vehRot.z, vehRot.w)
  elseif not reset and rot ~= nil then
    local vehRot = quat(veh:getClusterRotationSlow(veh:getRefNodeId()))
    local diffRot = vehRot:inversed() * rot
  if request['rot'] ~= nil then
    local quat = quat(request['rot'][1], request['rot'][2], request['rot'][3], request['rot'][4])
    sobj:setPosRot(request['pos'][1], request['pos'][2], request['pos'][3], quat.x, quat.y, quat.z, quat.w)
    pos = vec3(pos[1], pos[2], pos[3])
    rot = quat(rot)
    rot = quat(-rot.y, rot.x, rot.w, -rot.z) -- vehicles' forward is inverted
    rot = quat(rot)
    rot = quat(-rot.y, rot.x, rot.w, -rot.z) -- vehicles' forward is inverted
  end
@/lua/ge/extensions/core/groundMarkerArrows.lua
        pos = vec3(0,0,0),
        rot = quat(0,0,0,1),
        state = "unused",
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/loop/getLoopVehiclePosition.lua
      -- self.pinOut.rot.value = rot
      local correctedRot = quat(rot) * quat(0,0,-1,0)
      vehicleSetPositionRotation(self.pinIn.vehId.value, pos[1], pos[2], pos[3], rot[1], rot[2], rot[3], rot[4])
      -- self.pinOut.rot.value = rot
      local correctedRot = quat(rot) * quat(0,0,-1,0)
      vehicleSetPositionRotation(self.pinIn.vehId.value, pos[1], pos[2], pos[3], rot[1], rot[2], rot[3], rot[4])
@/lua/ge/extensions/gameplay/rally/loop/rallyLoopManager.lua
        -- Flip rot about the z axis (nextEntry.tcInRot is already a quat object)
        -- local rot = nextEntry.tcInRot * quat(0, 0, 1, 0)
        local rot = nextEntry.tcInRot
    -- Apply rotation correction (same as moveTo node)
    local correctedRot = rotQuat * quat(0,0,-1,0)
    return pos, {correctedRot.x, correctedRot.y, correctedRot.z, correctedRot.w}
@/lua/ge/extensions/flowgraph/nodes/vehicle/moveTo.lua
      if not pos or #pos ~= 3 or not rot then return end
      local correctedRot = quat(rot) * quat(0,0,-1,0)
      spawn.safeTeleport(veh, vec3(pos), quat(correctedRot))
      if not pos or #pos ~= 3 or not rot then return end
      local correctedRot = quat(rot) * quat(0,0,-1,0)
      spawn.safeTeleport(veh, vec3(pos), quat(correctedRot))
      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
    if not pos or #pos ~= 3 or not rot then return end
    local correctedRot = quat(rot) * quat(0,0,-1,0)
    spawn.safeTeleport(veh, vec3(pos), quat(correctedRot), nil, nil, nil, nil, false)
    if not pos or #pos ~= 3 or not rot then return end
    local correctedRot = quat(rot) * quat(0,0,-1,0)
    spawn.safeTeleport(veh, vec3(pos), quat(correctedRot), nil, nil, nil, nil, false)
    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/core/cameraModes/onboard.lua
local function rotateEuler(x, y, z, q)
  q = q or quat()
  q = quatFromEuler(0, z, 0) * q
@/lua/ge/extensions/core/cameraModes/topDown.lua
  data.res.pos = camPos -- required, vec3()
  data.res.rot = qdir -- required, quat()
  data.res.fov = self.fov -- required
@/gameplay/missionTypes/collection/customNodes/collectionNode.lua
    self.pinOut.recoveryPos.value = (self.currentRecovery and self.currentRecovery.pos or vec3()):toTable()
    self.pinOut.recoveryRot.value = (self.currentRecovery and self.currentRecovery.rot or quat()):toTable()
  end
@/lua/vehicle/extensions/tech/techCore.lua
    front = obj:getFrontPosition(),
    rotation = quat(obj:getRotation())
  }
@/lua/ge/extensions/flowgraph/nodes/vehicle/spawnVehicle.lua
      local spawnPos = self.pinIn.pos.value and vec3(self.pinIn.pos.value)
      local spawnRot = self.pinIn.rot.value and quat(self.pinIn.rot.value)
      if spawnRot then
      if spawnRot then
        spawnRot = quat(0,0,1,0) * spawnRot -- rotate 180 degrees
      end
@/lua/ge/extensions/flowgraph/nodes/scene/storeStatics.lua
        pos = vec3(obj:getPosition()):toTable(),
        rot = quat(obj:getRotation()):toTable(),
        scl = vec3(obj:getScale()):toTable(),
  -- rotation
  rot = quat(rot[1],rot[2],rot[3],rot[4])
  rot = rot:toTorqueQuat()
@/lua/ge/map.lua
  local pos = vec3(posX, posY, posZ)
  local rot = quat(rotX, rotY, rotZ, rotW)
  spawn.safeTeleport(veh, pos, rot, checkOnlyStatics_, visibilityPoint_, removeTraffic_, centeredPosition, resetVehicle)
@/lua/ge/extensions/editor/raceEditor/pacenotes.lua
      if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
        note.normal = quat(rotation)*vec3(0,1,0)
      else
      else
        note.normal = self.beginDragRotation * quat(rotation)*vec3(0,1,0)
      end
@/lua/vehicle/controller/playerController.lua
local debugVectors = {}
local cameraRotation = quat(0, 0, 0, 0)
local cameraRotationStandardVector = vec3(0, 1, 0)
@/lua/ge/extensions/flowgraph/nodes/math/math.lua
            else
              self.quatCache[key] = quat(val)
            end
@/lua/ge/extensions/editor/assemblySpline/molecule.lua
-- Module state.
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local placedPosWS, posWS, attachAnchorPostRotateMS = vec3(), vec3(), vec3()
-- Module state.
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local placedPosWS, posWS, attachAnchorPostRotateMS = vec3(), vec3(), vec3()
-- Module state.
local forwardRot, upRot, aligningRot = quat(), quat(), quat()
local placedPosWS, posWS, attachAnchorPostRotateMS = vec3(), vec3(), vec3()
@/lua/ge/extensions/career/modules/inventory.lua
    if veh then
      data.spawnedPlayerVehicles[inventoryId] = {pos = veh:getPosition(), rot = quat(0,0,1,0) * quat(veh:getRefNodeRotation())}
    end
    if veh then
      data.spawnedPlayerVehicles[inventoryId] = {pos = veh:getPosition(), rot = quat(0,0,1,0) * quat(veh:getRefNodeRotation())}
    end
@/lua/ge/extensions/editor/meshSpline/import.lua
local importDelayFrameCount = 0
local meshRot = quat()
local tangent, meshXAxis = vec3(), vec3()
@/lua/ge/extensions/gameplay/drag/debug.lua
            if im.IsItemHovered() and editor_dragRaceEditor then
              local rot = quat(laneData.transform.rotation)
              local x, y, z = laneData.transform.scale.x, laneData.transform.scale.y, laneData.transform.scale.z
@/lua/ge/extensions/gameplay/missions/missions.lua
  if mission then
    return vec3(mission.startTrigger.pos), quat(mission.startTrigger.rot)
  end
@/lua/ge/extensions/scenario/busdriver.lua
  local tpos,pos = vec3(nextStop[3]) + vec3(0,0,3), vec3(0,0,0)
  local tr = quat(nextStop[4])
  local r
    local vDirVec=vec3(pv:getDirectionVector())
    local tr = quat(nextStop[4])
    local yVec = tr*vec3(0,1,0)
@/lua/ge/extensions/flowgraph/nodes/types/transform.lua
  self.position = position + cameraPosition
  self.rotation = quat(0,0,0,1)
  self.scale = vec3(1,1,1)
function C:gizmoBeginDrag()
  self._beginDragRotation = deepcopy(quat(self.rotation))
  self._beginDragScale = vec3(self.scale)
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      self.rotation = quat(rotation)
    else
    else
      self.rotation = self._beginDragRotation * quat(rotation)
    end
    if im.DragFloat4("##rot"..self.id,rot, 0.025) then
      self.rotation = quat(rot[0],rot[1],rot[2],rot[3]):normalized()
      self:updateTransform()
      self.position = vec3(obj:getPosition())
      self.rotation = quat(obj:getRotation())
      self.scale = vec3(obj:getScale())
    self.position = vec3(obj:getPosition())
    self.rotation = quat(obj:getRotation())
    self.scale = vec3(obj:getScale())
  if nodeData.rotation then
    self.rotation = quat(nodeData.rotation[1], nodeData.rotation[2], nodeData.rotation[3], nodeData.rotation[4])
  end
@/lua/ge/extensions/flowgraph/nodes/types/quat.lua

local quatOut = quat()
function C:work()
  builder:Middle()
  im.Text(tostring(quat(self.pinIn.x.value or 0, self.pinIn.y.value or 0, self.pinIn.z.value or 0, self.pinIn.w.value or 0)))
end
@/lua/ge/extensions/editor/crawlEditor/paths.lua
  self._prevPathnodePos = {}
  self._prevPathnodeRotation = quat(1, 0, 0, 0)
  self.beginDragRotation = quat(1, 0, 0, 0)
  self._prevPathnodeRotation = quat(1, 0, 0, 0)
  self.beginDragRotation = quat(1, 0, 0, 0)
  self.snapToTerrain = true
    -- Rotation
    local rotation = self.currentPathnode.rotation or quat(1, 0, 0, 0)
    local rot = im.ArrayFloat(4)
    if rotEditEnded[0] then
      self.currentPathnode.rotation = quat(rot[0], rot[1], rot[2], rot[3])
      markPathAsDirty(path)
    pos = vec3(0, 0, 0),
    rotation = quat(1, 0, 0, 0),
    radius = 4.0,

  local rotation = self.currentPathnode.rotation or quat(1, 0, 0, 0)
  local rotationQuatF = QuatF(rotation.x, rotation.y, rotation.z, rotation.w)
  self._prevPathnodePos = deepcopy(self.currentPathnode.pos)
  self._prevPathnodeRotation = quat(self.currentPathnode.rotation or quat(1, 0, 0, 0))
end
  self._prevPathnodePos = deepcopy(self.currentPathnode.pos)
  self._prevPathnodeRotation = quat(self.currentPathnode.rotation or quat(1, 0, 0, 0))
end
    -- Handle rotation via gizmo
    local newRotation = quat(editor.getAxisGizmoTransform():toQuatF())
    self.currentPathnode.rotation = newRotation
  local oldRot = self._prevPathnodeRotation
  local newRot = self.currentPathnode.rotation or quat(1, 0, 0, 0)
@/lua/ge/extensions/flowgraph/nodes/types/vec3.lua

local tempQuat = quat()
local vecOut = vec3()
@/lua/ge/extensions/gameplay/missions/missionManager.lua
                  pos = vec3(sObj:getPosition()),
                  rot = quat(sObj:getRotation())
                }
@/lua/ge/main.lua
function replaySpawnVehicle(jbeamFilename, partConfigData)
  local veh = spawn.spawnVehicle(jbeamFilename, partConfigData, vec3(), quat(), nil, nil, nil)
  if be:getEnterableObjectCount() == 1 then
@/lua/ge/extensions/flowgraph/nodes/vehicle/vehicleData.lua
local wCenter, wPos = vec3(), vec3()
local vehQuat = quat()
@/lua/ge/extensions/editor/assemblySpline/import.lua
local votes = { [0] = 0, [1] = 0, [2] = 0, [3] = 0 }
local tmpRot = quat()
local tangent, expectedBinormal, actualBinormal = vec3(), vec3(), vec3()
@/lua/common/tech/pcdLib.lua
  self.pos = vec3(0, 0, 0)
  self.rotQuat = quat(0, 0, 0, 1)
  self.points = nil
@/lua/ge/extensions/editor/tech/roadArchitect/staticMesh.lua
local root2Over2 = sqrt(2) * 0.5
local rot_q0 = quat(0, 0, 0, 1)                                                                             -- Some common rotations (as quaternions).
local rot_q90 = quat(0, 0, root2Over2, root2Over2)
local rot_q0 = quat(0, 0, 0, 1)                                                                             -- Some common rotations (as quaternions).
local rot_q90 = quat(0, 0, root2Over2, root2Over2)
local rot_q180 = quat(0, 0, 1, 0)
local rot_q90 = quat(0, 0, root2Over2, root2Over2)
local rot_q180 = quat(0, 0, 1, 0)
local rot_q270 = quat(0, 0, -root2Over2, root2Over2)
local rot_q180 = quat(0, 0, 1, 0)
local rot_q270 = quat(0, 0, -root2Over2, root2Over2)

      local rot = quat()
      if isGlobalZ then
  end
  local rot = quat()
  local tgt = lat:cross(nml)
@/lua/ge/extensions/flowgraph/nodes/math/quaternion/lookAt.lua
local dirVec, dirVecUp = vec3(), vec3()
local rot = quat()
@/lua/ge/extensions/flowgraph/nodes/scene/rectMarker.lua
local sc = vec3()
local tr = quat()
local defaultClrIn = {1,0.5,0,1}
  if self.pinIn.onlyForward.value and self.pinIn.visibleMarkers.value then
    local rot = quat(self.pinIn.rotation.value)
    local x, y = rot * vec3(1,0,0), rot * vec3(0,1,0)
  local tr = self.pinIn.rotation.value or zerosTable4
  tr = quat(tr[1],tr[2],tr[3],tr[4])
  local scl = vec3(self.pinIn.scale.value or {1,1,1})
    local rot = self.pinIn.rotation.value or zerosTable4
    rot = quat(rot[1],rot[2],rot[3],rot[4])
    rot = rot:toTorqueQuat()
        local rot = self.pinIn.rotation.value or zerosTable4
        rot = quat(rot[1],rot[2],rot[3],rot[4])
        rot = rot:toTorqueQuat()
@/lua/ge/extensions/core/camera.lua

local resPos, resTargetPos, resRot = vec3(), vec3(), quat()

local finalCameraData = {pos = vec3(), rot = quat(), fovDeg = 0}
local validData
local lastValidData = { fov=60, pos=vec3(), rot=quat() } -- protect against getting NaNs on the very first frame
-- guard against sending NaN and inf to C++, which will put it in an unrecoverable state
  if rx and ry and rz and rw then
    core_camera.setRotation(pid, quat(rx, ry, rz, rw))
  end
local function getQuat()
  return quat(finalCameraData.rot)
end
@/lua/ge/extensions/gameplay/discover/discover_038.lua
        spawningOptions.pos = vec3(-806.7416992,-325.3113098,237.535614)
        spawningOptions.rot = quat(1.781464772e-06,-1.254244252e-05,0.8572401185,0.5149168662)
        spawningOptions.autoEnterVehicle = true
@/lua/ge/extensions/gameplay/rally/recce/cutsRecording.lua
    obj.pos = vec3(obj.pos)
    obj.quat = quat(obj.quat)
@/lua/ge/extensions/gameplay/drift/freeroam/driftSpots.lua
        scl = vec3(lineData.scl),
        rot = quat(lineData.rot),
        startDir = vec3(lineData.startDir),
  if spot then
    return vec3(spot.spatialInfo.bigMapTp.pos), quat(spot.spatialInfo.bigMapTp.rot)
  end
@/lua/ge/extensions/flowgraph/nodes/gameplay/toggleWalking.lua
        local pos = self.pinIn.pos.value and vec3(self.pinIn.pos.value) or nil
        local rot = self.pinIn.rot.value and quat(self.pinIn.rot.value) or nil
        local succ, id = gameplay_walk.setWalkingMode(true, pos, rot)
@/lua/ge/extensions/editor/util/editorElementHelper.lua
  elem.defaultPos = valueOptions.defaultPos or vec3()
  elem.defaultRot = valueOptions.defaultRot or quat(0,0,0,1)
local function boolSetContainer(e, ctd) if ctd[e.fieldName] == nil then e.ptr[0] = e.defaultValue else e.ptr[0] = ctd[e.fieldName] end end
local function transformSetContainer(e, ctd) e.transform:set(vec3(ctd[e.fieldNamePos] or e.defaultPos), quat(ctd[e.fieldNameRot] or e.defaultRot), e.oneDimScale and (ctd[e.fieldNameScl] or e.defaultScl) or (vec3(ctd[e.fieldNameScl] or e.defaultScl))) end
local function modelConfigSetContainer(e, ctd) e.mc.model = ctd[e.fieldNameModel] or e.defaultModel e.mc.config = ctd[e.fieldNameConfig] or e.defaultConfig e.mc.configPath = ctd[e.fieldNameConfigPath] or e.defaultConfigPath ui_flowgraph_editor.vehicleSelectorRefresh(e.mc) end
  if editor.uiIconImageButton(editor.icons.undo, imVec24x24) then
    e.transform:set(vec3(e.defaultPos), quat(e.defaultRot), e.oneDimScale and (e.defaultScl) or (vec3(e.defaultScl)))
    ctd[e.fieldNamePos] = e.hasPos and (e.transform.pos:toTable())
@/lua/ge/extensions/editor/tech/roadArchitect/utilities.lua
  if dot > 0.999999 then
      return quat(0, 0, 0, 1)
  end
    orthogonal:normalize()
    return quat(orthogonal.x, orthogonal.y, orthogonal.z, 0):normalized()
  end
  local inv_w = 1.0 / w
  return quat(cross.x * inv_w, cross.y * inv_w, cross.z * inv_w, w * 0.5):normalized()
end
  q:normalize()
  local qOut = (q * quat(v.x, v.y, v.z, 0)) * quat(-q.x, -q.y, -q.z, q.w)
  return vec3(qOut.x, qOut.y, qOut.z)
  q:normalize()
  local qOut = (q * quat(v.x, v.y, v.z, 0)) * quat(-q.x, -q.y, -q.z, q.w)
  return vec3(qOut.x, qOut.y, qOut.z)
@/lua/ge/extensions/career/modules/testDrive.lua
  gameplay_walk.getInVehicle(vehObj)
  startPosRot = {pos = vehObj:getPosition(), rot = quat(0,0,1,0) * quat(vehObj:getRefNodeRotation())}
  gameplay_walk.getInVehicle(vehObj)
  startPosRot = {pos = vehObj:getPosition(), rot = quat(0,0,1,0) * quat(vehObj:getRefNodeRotation())}
@/lua/ge/extensions/editor/trafficManager.lua

  currTransform = {pos = vec3(), rot = quat(), scl = 0}
  currSelection = {vehicle = 0, light = 0, sign = 0}
            sessionData.home.pos = vec3(sessionData.home.pos)
            sessionData.home.rot = quat(sessionData.home.rot)
            sessionData._loaded = true -- temporary flag, gets unset when home transform is processed
@/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/flowgraph/nodes/vehicle/alignForCoupling.lua
      if self.pinIn.rot.value then
        local desiredRot = quat()
        if type(self.pinIn.rot.value) == 'number' then
        elseif type(self.pinIn.rot.value) == 'table' then
          desiredRot = quat(self.pinIn.rot.value)
        end
@/lua/ge/extensions/core/cameraModes/transition.lua
  self.camLastFOV = 90
  self.camLastQDir = quat(1,0,0,1)
  self.camLastNearClip = 0.1
@/lua/ge/extensions/editor/util/transformUtil.lua
  self.pos = vec3(0, 0, 0)
  self.rot = quat(0, 0, 0, 1)
  self.scl = vec3(1, 1, 1)
-- sets the position, rotation and scale of the helper. nil parameters are ignored,
-- so you can only set the rotation with :set(nil, quat(...), nil) for example
function C:set(pos, rot, scl)
      pos = vec3(self.pos),
      rot = quat(self.rot),
      scl = self.oneDimensionalScale and self.scl or vec3(self.scl),
    if im.InputFloat4("##Rot", self.inputRot, "%0." .. editor.getPreference("ui.general.floatDigitCount") .. "f") then
      self.rot = quat(self.inputRot[0], self.inputRot[1], self.inputRot[2], self.inputRot[3]):normalized()
      changed = true
      if im.InputFloat4(self.objectName .. " Rotation", self.inputRot, "%0." .. editor.getPreference("ui.general.floatDigitCount") .. "f", im.InputTextFlags_EnterReturnsTrue) then
        self.rot = quat(self.inputRot[0], self.inputRot[1], self.inputRot[2], self.inputRot[3])
        changed = true
      if im.InputFloat4("Rot", self.inputRot, "%0." .. editor.getPreference("ui.general.floatDigitCount") .. "f", im.InputTextFlags_EnterReturnsTrue) then
        self.rot = quat(self.inputRot[0], self.inputRot[1], self.inputRot[2], self.inputRot[3])
        changed = true
  self.beginDragPos = vec3(self.pos)
  self.beginDragRot = quat(self.rot)
  self.beginDragScl = self.oneDimensionalScale and self.scl or vec3(self.scl)
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      self.rot = quat(rotation)
    else
    else
      self.rot = self.beginDragRot * quat(rotation)
    end
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/pursuitRoadblock.lua
  local params = {angle = self.pinIn.angle.value, centerAngle = self.pinIn.centerAngle.value, width = self.pinIn.width.value}
  gameplay_police.placeRoadblock(vehIds, vec3(self.pinIn.pos.value), quat(self.pinIn.rot.value), params)
end
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/vehicleStoppedNearPlane.lua
  self.pos = vec3()
  self.rot = quat()
  self.pos = vec3()
  self.rot = quat()
end
@/lua/ge/extensions/gameplay/race/race.lua
local vehDirUp = vec3()
local vehRot = quat()
function C:updateVehicle(id, dt)
@/lua/ge/extensions/editor/crawlEditor/startingPositions.lua
  if rotEditEnded[0] then
    local newRot = quat(rot[0], rot[1], rot[2], rot[3])
    editor.history:commitAction("Change Starting Position Area Rotation",
      position = vec3(0, 0, 0),
      rotation = quat(1, 0, 0, 0),
      radius = 4.0
        oldPosition = vec3(self.startingPosition.transform.position),
        oldRotation = quat(self.startingPosition.transform.rotation),
        downPos = vec3(mouseInfo._downPos),
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      self.startingPosition.transform.rotation = quat(rotation)
    else
    else
      self.startingPosition.transform.rotation = self.beginDragRotation * quat(rotation)
    end
@/lua/ge/extensions/gameplay/sites/parkingSpot.lua
local zeroVector = vec3(0,0,0)
local zeroQuat = quat(0,0,0,1)
  self.pos = vec3()
  self.rot = quat(0, 0, 0, 1)
  self.scl = vec3()
  self.pos = vec3(data.pos)
  self.rot = quat(data.rot)
  self.scl = vec3(data.scl)
  if rot then
    self.rot = quat(rot)
  end
  self.wasGenerated = true
  self.rotOrig = quat(self.rot)
  self.rot = quatFromEuler(0, 0, self.multiSpotData.spotRotation) * self.rotOrig

local backwardsQuat = quat(0, 0, 1, 0)
function C:moveResetVehicleTo(vehId, lowPrecision, backwards, addedOffsetPos, addedOffsetRot, useSafeTeleport, removeTraffic, resetVehicleInSafeTeleport, options)

  local selfRot = quat(self.rot)
  if backwards then
@/lua/ge/extensions/editor/crawlEditor/waypoints.lua
  self.beginDragNodeData = nil
  self.beginDragRotation = quat(1, 0, 0, 0)
  self.beginDragRadius = 1.0
        if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
          local newNormal = quat(rotation)*vec3(0,1,0)
          node:setNormal(newNormal)
        else
          local newNormal = self.beginDragRotation * quat(rotation)*vec3(0,1,0)
          node:setNormal(newNormal)
@/lua/ge/extensions/editor/tech/roadArchitect/render.lua
local root2Over2 = sqrt(2) * 0.5
local rot_q0 = quat(0, 0, 0, 1)                                                                     -- Some common rotations (as quaternions).
local rot_q90 = quat(0, 0, root2Over2, root2Over2)
local rot_q0 = quat(0, 0, 0, 1)                                                                     -- Some common rotations (as quaternions).
local rot_q90 = quat(0, 0, root2Over2, root2Over2)
local rot_q180 = quat(0, 0, 1, 0)
local rot_q90 = quat(0, 0, root2Over2, root2Over2)
local rot_q180 = quat(0, 0, 1, 0)
local rot_q270 = quat(0, 0, -root2Over2, root2Over2)
local rot_q180 = quat(0, 0, 1, 0)
local rot_q270 = quat(0, 0, -root2Over2, root2Over2)
        local tgt = v:normalized()
        local rot = quat()
        if isGlobalZ then
    end
    local rot = quat()
    local tgt = lat:cross(nml)
@/lua/ge/extensions/gameplay/markers/gasStationMarker.lua
local vecOne = vec3(1,1,1)
local quatZero = quat(0,0,0,0)
local vecX = vec3(1,0,0)
    if area and icon then
      local pos, rot, scl = area:getPosition(), quat(area:getRotation()), area:getScale()
      local zVec, yVec, xVec = rot*vecZ*scl.z, rot*vecY*scl.y, rot*vecX*scl.x
@/lua/ge/extensions/editor/raceEditor/pathnodes.lua
        if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
          node.normal = quat(rotation)*vec3(0,1,0)
        else
        else
          node.normal = self.beginDragRotation * quat(rotation)*vec3(0,1,0)
        end
@/lua/vehicle/extensions/test/csvMetrics.lua
  local pos = obj:getPosition()
  local rot = quat(obj:getRotation())
@/lua/ge/extensions/freeroam/bigMapMode.lua
  endMarkerData.pos = vec3(endMarkerData.pos)
  endMarkerData.rot = quat(endMarkerData.rot.x, endMarkerData.rot.y, endMarkerData.rot.z, endMarkerData.rot.w)
  camPath = buildTransitionPath(endMarkerData)
@/lua/ge/extensions/flowgraph/nodes/math/quaternion/direction.lua

local rot = quat()
@/lua/ge/extensions/editor/toolUtilities/gizmo.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      q = quat(tmpQuatF)
    else
    else
      q = beginDragRot * quat(tmpQuatF)
    end
@/lua/ge/extensions/editor/driftDataEditor.lua
  end
  transformsUtils["bigMapTp"] = createNewTransform("Big map TP", true, true, false, currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.pos, quat(currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.rot), currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.scl)
end
    if elem.pos and type(elem.pos) == "table" and elem.pos.x and elem.pos.y and elem.pos.z then elem.pos = vec3(elem.pos) end
    if elem.rot and type(elem.rot) == "table" and elem.rot.x and elem.rot.y and elem.rot.z and elem.rot.w then elem.rot = quat(elem.rot) end
    if elem.scl and type(elem.scl) == "table" and elem.scl.x and elem.scl.y and elem.scl.z then elem.scl = vec3(elem.scl) end
      scl = vec3(lineData.scl),
      rot = quat(lineData.rot),
      startDir = vec3(lineData.startDir),
    pos = vec3(spotData.spatialInfo.bigMapTp.pos),
    rot = quat(spotData.spatialInfo.bigMapTp.rot),
    scl = vec3(spotData.spatialInfo.bigMapTp.scl)
      scl = vec3(1, 1, 1):toTable(),
      rot = quat(0, 0, 0, 1):toTable(),
      startDir = vec3(0,0,0),
    pos = camPos:toTable(),
    rot = quat(0, 0, 0, 1):toTable(),
    scl = vec3(1, 1, 1):toTable()
          local pos = obj:getPosition()
          driftData = { stuntZones = {{type = "donut", pos = pos + vec3(10, 0, 0), scl = 10},{type = "driftThrough", rot = quat(0, 0, 0, 1), pos = pos + vec3(10, 20, 0), scl = vec3(8, 1, 1)},{type = "hitPole", pos = pos + vec3(-10, 0, 0)}}}
        end
            cooldown = 8,
            rot = quat(0, 0, 0, 1),
            pos = pos + vec3(10, 20, 0),
      if player then
        spawn.safeTeleport(player, vec3(currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.pos), quat(currDriftSpots[selectedDriftSpotId].spatialInfo.bigMapTp.rot), nil, nil, nil, nil, false)
      end
@/lua/ge/extensions/scenario/scenarios.lua
        if o:getField('directionalWaypoint',0) == '1' then
           rota = quat(o:getRotation())*vec3(1,0,0)
        end
      -- Because we delete vehicle that are not assigned to a controller, they have to be respawned.
      -- We perform a 180 rotation (quat(0,0,1,0) * rot) here to undo the 180 rotation that will happen in
      -- spawn.lua setVehicleObject() by default
          local startingData = scenario.startingTransforms[vehicleName]
          startingData.rot = quat(0,0,1,0) * (startingData.rot or quat())
          local spawningData = createPlayerSpawningData(vehicleData.model, vehicleData.config, vehicleData.color, vehicleData.licenseText, vehicleName, startingData.pos, startingData.rot)
          local startingData = scenario.startingTransforms[vehicleName]
          startingData.rot = quat(0,0,1,0) * (startingData.rot or quat())
          local spawningData = createPlayerSpawningData(vehicleData.model, vehicleData.config, vehicleData.color, vehicleData.licenseText, vehicleName, startingData.pos, startingData.rot)
@/lua/ge/extensions/gameplay/missions/startTrigger.lua
local function coordinatesTriggerList(trigger,locations)
  table.insert(locations, {type='coordinates', level=trigger.level, pos=vec3(trigger.pos), rot=quat(trigger.rot or {0,0,0,1}), radius=trigger.radius, check=defaultLocationCheck, displayMarker=defaultLocationDisplayMarker})
end
@/lua/ge/extensions/gameplay/markers/missionMarker.lua
    pos = vec3(),
    rot = quat(),
    radius = hardcodedRadius, -- Fixed radius of 1.5m
@/lua/ge/extensions/editor/rallyEditor/pacenotes.lua
      if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
        wp.normal = quat(rotation)*vec3(0,1,0)
      else
      else
        wp.normal = self.beginDragRotation * quat(rotation)*vec3(0,1,0)
      end
@/lua/ge/extensions/editor/scriptAIEditor.lua
  local n = camWinData.nodes[camWinData.selectedNode]
  mState.beginDragPos, mState.beginDragRotation = vec3(n.x[0], n.y[0], n.z[0]), quat(n.qx, n.qy, n.qz, n.qw)
end
  elseif editor.getAxisGizmoMode() == editor.AxisGizmoMode_Rotate then
    local data = { idx = idx, old = mState.beginDragRotation, new = quat(n.qx, n.qy, n.qz, n.qw) }
    editor.history:commitAction("Rotate Camera Path Node", data, gizmoRotUndo, gizmoRotRedo)
    q2:setFromMatrix(rotMat)
    local q = mState.beginDragRotation * quat(q2.x, q2.y, q2.z, q2.w)
    n.qx, n.qy, n.qz, n.qw = q.x, q.y, q.z, q.w
      path.markers[i] = {
        pos = vec3(n.x[0], n.y[0], n.z[0]), rot = quat(n.qx, n.qy, n.qz, n.qw),
        time = n.t[0],
  if isComputeRot == true then
    local r1 = quat(n1.qx, n1.qy, n1.qz, n1.qw)
    local r2 = quat(n2.qx, n2.qy, n2.qz, n2.qw)
    local r1 = quat(n1.qx, n1.qy, n1.qz, n1.qw)
    local r2 = quat(n2.qx, n2.qy, n2.qz, n2.qw)
    local r3 = quat(n3.qx, n3.qy, n3.qz, n3.qw)
    local r2 = quat(n2.qx, n2.qy, n2.qz, n2.qw)
    local r3 = quat(n3.qx, n3.qy, n3.qz, n3.qw)
    local r4 = quat(n4.qx, n4.qy, n4.qz, n4.qw)
    local r3 = quat(n3.qx, n3.qy, n3.qz, n3.qw)
    local r4 = quat(n4.qx, n4.qy, n4.qz, n4.qw)
    if i1 == i2 then                                                            -- Edge case: Set the correct rotation to the virtual marker at the start.
@/lua/ge/extensions/flowgraph/nodes/gameplay/rally/trackVehicleDistanceToPos.lua
-- local wCenter, wPos = vec3(), vec3()
local vehPos, vehRot, vehVel = vec3(), quat(), vec3()
@/lua/ge/extensions/editor/objectToSplineEditor.lua

      local posOffset, rotOffset = vec3(0, 0, 0), quat(0, 0, 0, 1)
      if params.randomPosOffset and params.randomPosOffset ~= 0 then
@/lua/ge/extensions/flowgraph/nodes/util/randomQuaternion.lua

  local q = quat(0, 0, 0, 1)
  q = quatFromEuler(x, 0, 0) * q
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficSpawnGroup.lua
        local pos = self.pinIn.startPos.value and vec3(self.pinIn.startPos.value)
        local rot = self.pinIn.startRot.value and quat(self.pinIn.startRot.value)
        local mode = self.pinIn.spawnMode.value
@/lua/ge/extensions/gameplay/race/startPosition.lua
  self.pos = vec3()
  self.rot = quat()
  self.pos = vec3(data.pos)
  self.rot = quat(data.rot)
end
  self.pos = vec3(pos)
  self.rot = quat(rot)
end
  else
    local correctedRot = vehRot * quat(0,0,-1,0)
    log('D', logTag, 'safe teleporting vehicle to start position with corrected rotation')
    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/gameplay/race/pathnode.lua

  local rot = quat()
  if alignMode == 'terrain' then
@/lua/ge/extensions/gameplay/rally/driveline/pointList.lua
    pos = vec3(pos),
    quat = quat or quat(0, 0, 0, 1),
    ts = ts or 0,
@/lua/ge/extensions/core/busRouteManager.lua
        if trigger.type == "busstop" then
          triggerPos[trigger.name] = {trigger.name,trigger.stopName, vec3(trigger:getPosition()):toTable(), quat(trigger:getRotation()):toTable(), vec3(trigger:getScale()):toTable()}
        end
@/lua/ge/extensions/gameplay/markers/parkingMarker.lua
local vecOne = vec3(1,1,1)
local quatZero = quat(0,0,0,0)
local vecX = vec3(1,0,0)
@/lua/ge/extensions/gameplay/drag/general.lua
  racer.vehDirectionVectorUp = vec3()
  racer.vehRot = quat()
  racer.vehVelocity = vec3()
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veView.lua
    if focusObj then
      focusRot = quat(focusObj:getRefNodeRotation())
      focusPos = focusObj:getPosition() + focusRot * view.dragOffset
@/lua/ge/extensions/editor/sidewalkSpline/populate.lua
local maxPlacements = 0
local finalRot = quat()
local forwardRot, upRot = quat(), quat()
local finalRot = quat()
local forwardRot, upRot = quat(), quat()
local tmpPosBack, tmpPosFront = vec3(), vec3()
local finalRot = quat()
local forwardRot, upRot = quat(), quat()
local tmpPosBack, tmpPosFront = vec3(), vec3()
      positionArray[placementIdx] = positionArray[placementIdx] or vec3()
      rotationArray[placementIdx] = rotationArray[placementIdx] or quat()
    end
            positionArray[placementIdx] = positionArray[placementIdx] or vec3()
            rotationArray[placementIdx] = rotationArray[placementIdx] or quat()
          end
@/lua/ge/extensions/gameplay/rally/transcripts/path.lua
--
-- local testQ = quat({
--   w = math.cos(theta),
@/lua/ge/extensions/core/cameraModes/relative.lua
local function rotateEuler(x, y, z, q)
  q = q or quat()
  q = quatFromEuler(0, z, 0) * q
@/lua/ge/extensions/gameplay/rally/transcripts/entry.lua
  if not (self.vehicle_data.vehicle_data and self.vehicle_data.vehicle_data.quat) then return nil end
  return quat(self.vehicle_data.vehicle_data.quat)
end
      pos = vec3(markerData.pos.x, markerData.pos.y, markerData.pos.z),
      rot = quat(markerData.rot.x, markerData.rot.y, markerData.rot.z, markerData.rot.w),
      time = markerData.time,
@/lua/ge/extensions/career/modules/tether.lua
  if area then
    local pos, rot, scl = area:getPosition(), quat(area:getRotation()), area:getScale()
    local zVec, yVec, xVec = rot*vecZ*scl.z, rot*vecY*scl.y, rot*vecX*scl.x
@/lua/ge/extensions/editor/sitesEditor/parkingSpots.lua
    if ps.rotOrig then
      ps.rot = quat(ps.rotOrig)
      ps.rotOrig = nil
  local old = {pos = transformUtil.beginDragPos or self.current.pos, rot = transformUtil.beginDragRot or self.current.rot, scl = transformUtil.beginDragScl or self.current.scl}
  local new = {pos = vec3(transformUtil.pos), rot = quat(transformUtil.rot), scl = vec3(transformUtil.scl)}
  editor.history:commitAction("Update Transform of "..self.current.name,
@/lua/ge/extensions/editor/meshEditor.lua
    local rotation = gizmoTransform:toQuatF()
    mesh:setNodeNormal(nodeID, quat(rotation):__mul(upVector))
  else
@/lua/ge/extensions/gameplay/crawl/saveSystem.lua
        if type(n.rotation) == 'table' and #n.rotation == 4 then
          node.rotation = quat(n.rotation[1], n.rotation[2], n.rotation[3], n.rotation[4])
        elseif type(n.rotation) == 'table' then
        elseif type(n.rotation) == 'table' then
          node.rotation = quat(n.rotation.x or 0, n.rotation.y or 0, n.rotation.z or 0, n.rotation.w or 1)
        end
      position = vec3(data.transform and data.transform.position or {0, 0, 0}),
      rotation = quat(data.transform and data.transform.rotation or {0, 0, 0, 1}),
      radius = data.transform and data.transform.radius or 10.0
@/lua/ge/extensions/util/trackBuilder/splineTrack.lua
  local cQ = core_camera.getQuat()
  local q = quat(cQ.x, cQ.y, cQ.z, cQ.w)
@/lua/ge/extensions/util/trackBuilder/cameraTransition.lua
  local cQ = core_camera.getQuat()
  oldQuat = quat(cQ.x,cQ.y,cQ.z,cQ.w)
@/lua/ge/extensions/core/cameraModes/free.lua

local rotEulerTemp = quat()
local function setRotateEuler(x, y, z, qSource, qDest)
local inputVec, acc, forceVec, tempVec = vec3(), vec3(), vec3(), vec3()
local qdir, qdirLook = quat(), quat()
function C:update(data)
local inputVec, acc, forceVec, tempVec = vec3(), vec3(), vec3(), vec3()
local qdir, qdirLook = quat(), quat()
function C:update(data)
@/lua/ge/extensions/gameplay/markers/walkingMarker.lua
local vecOne = vec3(1,1,1)
local quatZero = quat(0,0,0,0)
local vecX = vec3(1,0,0)
    if area and icon then
      local pos, rot, scl = area:getPosition(), quat(area:getRotation()), area:getScale()
      local zVec, yVec, xVec = rot*vecZ*scl.z, rot*vecY*scl.y, rot*vecX*scl.x