quatFromDir
Definition
-- @/lua/common/mathlib.lua:1108
function quatFromDir(dir, up)
local tmp = newLuaQuatxyzw(0, 0, 0, 1)
tmp:setFromDir(dir, up)
return tmp
end
Callers
@/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)),
mainRVData.pos = vec3(0,0,0)
mainRVData.gridRot = quatFromDir(unitVecs[3], unitVecs[2])
if viewMode == VIEW_MODE_LEFT then
qDir = quatFromDir(vec3(1,0,0), unitVecs[3])
elseif viewMode == VIEW_MODE_RIGHT then
elseif viewMode == VIEW_MODE_RIGHT then
qDir = quatFromDir(vec3(-1,0,0), unitVecs[3])
elseif viewMode == VIEW_MODE_BACK then
elseif viewMode == VIEW_MODE_BACK then
qDir = quatFromDir(vec3(0,1,0), unitVecs[3])
elseif viewMode == VIEW_MODE_FRONT then
elseif viewMode == VIEW_MODE_FRONT then
qDir = quatFromDir(vec3(0,-1,0), unitVecs[3])
elseif viewMode == VIEW_MODE_BOTTOM then
elseif viewMode == VIEW_MODE_BOTTOM then
qDir = quatFromDir(vec3(0,0,1), unitVecs[3])
elseif viewMode == VIEW_MODE_TOP then
elseif viewMode == VIEW_MODE_TOP then
qDir = quatFromDir(vec3(0,0,-1), unitVecs[1])
else
@/lua/ge/extensions/core/cameraModes/observer.lua
local dir = (data.pos - camPos):normalized()
local qdir = quatFromDir(dir)
@/lua/vehicle/recovery.lua
if useSmartSpawn then
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) .. ")")
if pitchLimit ~= nil and (math.abs(pitch) > pitchLimit or math.abs(roll) > rollLimit) then
rot = quatFromDir(-dirFront, upVector)
else
else
rot = quatFromDir(-dirFront, dirUp)
end
@/lua/ge/extensions/scenario/raceMarkers/sideColumnMarker.lua
local normal = self.normal and self.normal or (playerPosition-self.pos):normalized()
local rot = quatFromDir(normal:z0()):toTorqueQuat()
if distanceFromMarker > self.radius*1.5 then
@/lua/ge/extensions/gameplay/rally/loop/rallyLoopManager.lua
local rotVec = vec3(rot)
local rotQuat = quatFromDir(rotVec)
-- Apply rotation correction (same as moveTo node)
@/lua/ge/extensions/editor/objectToSplineEditor.lua
table.insert(points, {pos = pos, rot = quatFromDir(dirVec, dirVecUp) * rotOffset * quatFromEuler(math.pi, math.pi, math.pi)})
count = count + 1
@/lua/ge/extensions/scenario/raceMarkers/sideMarker.lua
local fwd = self.normal and self.normal or (playerPosition-self.pos)
local rot = quatFromDir(fwd:z0()):toTorqueQuat()
@/lua/ge/extensions/gameplay/drag/general.lua
local up = vehicle:getDirectionVectorUp()
local vehicleRot = quatFromDir(forward, up)
local x, y, z = vehicleRot * vec3(1,0,0), vehicleRot * vec3(0,1,0), vehicleRot * vec3(0,0,1)
local up = vehicle:getDirectionVectorUp()
local vehicleRot = quatFromDir(forward, up)
local x, y, z = vehicleRot * vec3(1,0,0), vehicleRot * vec3(0,1,0), vehicleRot * vec3(0,0,1)
@/lua/ge/extensions/tech/multiscreen.lua
if veh then
local vehicleRotation = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
local vehiclePosition = veh:getPosition()
@/lua/ge/extensions/flowgraph/nodes/scene/getPointOnDecalroad.lua
local q = quatFromDir(forward, vec3(0,0,1))
self.pinOut.rot.value = {q.x,q.y,q.z,q.w}
@/lua/ge/extensions/core/cameraModes/relative.lua
local up = dir:cross(left):normalized()
local qdir = quatFromDir(dir, up)
data.res.pos = data.pos
data.res.rot = quatFromDir(vec3(0,1,0), vec3(0, 0, 1))
if self.nearClip then data.res.nearClip = self.nearClip end
@/gameplay/missionTypes/scatterPickup/customNodes/scatterPrefabSetupNode.lua
local fwd = vec3(0,1,0):projectToOriginPlane(point.normal)
local rot = quatFromEuler(0,0,math.random() * 360) * quatFromDir(fwd, point.normal)
local trot = rot:toTorqueQuat()
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veFlexbodyDebug.lua
local refPos = vEditor.vdata.nodes[vEditor.vdata.refNodes[0].ref].pos
local rotInv = quatFromDir(-vEditor.vehicle:getDirectionVector(), vEditor.vehicle:getDirectionVectorUp()):inversed()
local vertPosLocal = rotInv * flexbodyObj:getDebugVertexPos(chosenVertID) + refPos
@/lua/ge/extensions/core/cameraModes/autopoint.lua
data.res.rot = data.res.rot or quat()
data.res.rot:set(quatFromDir((data.res.targetPos - data.res.pos):normalized()))
return true
@/lua/vehicle/scriptai.lua
local rot = quatFromDir(dir:cross(up):cross(up), up)
obj:queueGameEngineLua("getObjectByID(" .. tostring(obj:getId()) .. "):resetBrokenFlexMesh()")
local rot = quatFromDir(dir:cross(up):cross(up), up)
obj:queueGameEngineLua("getObjectByID(" .. obj:getId() .. "):autoplace(false);vehicleSetPositionRotation(" .. obj:getId() .. "," .. pos.x .. "," .. pos.y .. "," .. pos.z .. "," .. rot.x .. "," .. rot.y .. "," .. rot.z .. "," .. rot.w .. ")")
@/lua/ge/extensions/core/cameraModes/orbit.lua
data.res.pos = data.pos
data.res.rot = quatFromDir(vecY, vecZ)
return false
@/lua/ge/extensions/core/vehicleMirrors.lua
local lookDir = (norm + m.userCorrection):normalized()
--local mirrorCamQuatF = quatFromDir(norm, id32:normalized())
-- local c = camMirrorDir:cross(lookDir)
local refrectCamQuatF = quatFromDir(reflectionDir, id32:normalized())
@/lua/ge/extensions/flowgraph/nodes/gameplay/sites/location.lua
self.pinOut.roadSide.value = (closest.pos + (self._location.pos - closest.pos):normalized() * (closest.radius-2)):toTable()
self.pinOut.roadDir.value = quatFromDir(closest.a.pos - closest.b.pos, vec3(0,0,1)):toTable()
else
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua
-- core_camera.setPosition(0,vec3(0,10,2))
-- core_camera.setRotation(0,quatFromDir(vec3(-1.5,-1,0)))
camTarget = {dir=vec3(-1.5,-10,0)}
local dir = vec3(1,0,0)*t + vec3(1,1,0)
lo('?? for_dir:'..tostring(quatFromDir()))
end
-- core_camera.setRotation(0, quatFromEuler(math.pi/4,0,0)) --(0, 0, math.pi/2),)
-- core_camera.setRotation(0, quatFromDir(vec3(1,1,0))) --(0, 0, math.pi/2),)
-- local q = quatFromDir(vec3(1,1,0))+quatFromDir(vec3(1,1,0))
-- core_camera.setRotation(0, quatFromDir(vec3(1,1,0))) --(0, 0, math.pi/2),)
-- local q = quatFromDir(vec3(1,1,0))+quatFromDir(vec3(1,1,0))
-- core_camera.setPosRot(0, 0, 5, 3, 0, 0, 0.02, 1)
-- core_camera.setRotation(0, quatFromDir(vec3(1,1,0))) --(0, 0, math.pi/2),)
-- local q = quatFromDir(vec3(1,1,0))+quatFromDir(vec3(1,1,0))
-- core_camera.setPosRot(0, 0, 5, 3, 0, 0, 0.02, 1)
camTarget.cpos = core_camera.getPosition()
camTarget.crot = quatFromDir(core_camera.getForward()) --core_camera.getQuat()
-- lo('??++++++++++++ to_DIR:'..tostring(camTarget.dir)..':'..tostring(camTarget.crot)..':'..tostring(quatFromDir(core_camera.getForward())))
camTarget.crot = quatFromDir(core_camera.getForward()) --core_camera.getQuat()
-- lo('??++++++++++++ to_DIR:'..tostring(camTarget.dir)..':'..tostring(camTarget.crot)..':'..tostring(quatFromDir(core_camera.getForward())))
-- local eu = core_camera.getQuat():toEulerYXZ()
end
local q = camTarget.crot*(1-t)+quatFromDir(camTarget.dir)*t
-- lo('?? for_q:'..tostring(camTarget.crot)..'>'..tostring(q))
@/lua/ge/extensions/gameplay/race/startPosition.lua
normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
self.rot = quatFromDir((center - normalTip):normalized(), (flU-bl):normalized())
else
else
self.rot = quatFromDir((fl - bl):normalized(), (flU-bl):normalized())
end
@/lua/ge/extensions/editor/trafficManager.lua
vehData.vehType = core_vehicles.getModel(vehData.model).model.Type
vehData.home = vehData.home or {pos = veh:getPosition(), rot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())} -- reset transform
vehData.aiType = vehData.aiType or "basic" -- basic, script, target, user
spawnOptions.pos = anchorPos
spawnOptions.rot = quatFromDir(vecY:rotated(quatFromDir((mousePos - anchorPos):normalized(), vecUp)), vecUp)
spawnOptions.pos = anchorPos
spawnOptions.rot = quatFromDir(vecY:rotated(quatFromDir((mousePos - anchorPos):normalized(), vecUp)), vecUp)
spawnOptions.pos = spawnPos
spawnOptions.rot = quatFromDir(spawnDir, vecUp)
else -- road found, no lanes : road direction for spawning
spawnOptions.pos = anchorPos -- use anchorPos as spawnPos; consider if the computed value is better
spawnOptions.rot = quatFromDir(spawnDir, vecUp)
end
-- if no road found, then use the camera direction - update spawnOptions.rot
spawnOptions.rot = quatFromDir(core_camera.getForward(), vecUp)
end
currVeh:queueLuaCommand('recovery.saveHome()')
sessionData.home = {pos = currVeh:getPosition(), rot = quatFromDir(currVeh:getDirectionVector(), currVeh:getDirectionVectorUp())}
editor.showNotification("Updated home position of current vehicle.")
pos = currVeh:getPosition(),
rot = quatFromDir(currVeh:getDirectionVector(), currVeh:getDirectionVectorUp()),
model = currVeh.jbeam,
pos.x, pos.y, pos.z = options.objPos[0], options.objPos[1], options.objPos[2]
spawn.safeTeleport(currVeh, pos, quatFromDir(currVeh:getDirectionVector(), currVeh:getDirectionVectorUp()), nil, nil, false, true)
end
dirVec.x, dirVec.y, dirVec.z = options.objRot[0], options.objRot[1], options.objRot[2]
spawn.safeTeleport(currVeh, currVeh:getPosition(), quatFromDir(dirVec, vecUp), nil, nil, false, true)
end
if mouseHandler("Click and drag to move object to here") then
spawn.safeTeleport(currVeh, anchorPos, quatFromDir((mousePos - anchorPos):normalized(), vecUp), nil, nil, false, true)
shiftLock = false
pos = pos + currInstance.dir:cross(vecUp) * (offset + 1)
local rot = quatFromDir(currInstance.dir:z0(), vecUp)
local obj = currInstance:createSignalObject("art/shapes/objects/s_trafficlight_boom_sn.dae", pos, rot)
spawnOptions.pos = anchorPos
spawnOptions.rot = quatFromDir(vecY:rotated(quatFromDir((mousePos - anchorPos):normalized(), vecUp)), vecUp)
else
spawnOptions.pos = anchorPos
spawnOptions.rot = quatFromDir(vecY:rotated(quatFromDir((mousePos - anchorPos):normalized(), vecUp)), vecUp)
else
local obj = scenetree.findObject(nameId)
spawn.safeTeleport(obj, obj:getPosition(), quatFromDir(obj:getDirectionVector(), obj:getDirectionVectorUp()), nil, nil, false, true)
@/lua/ge/extensions/gameplay/race/pathnode.lua
if alignMode == 'terrain' then
rot = qOff * pRot * quatFromDir(vec3(hit.norm), self.normal)
elseif alignMode == 'pathnode' then
elseif alignMode == 'pathnode' then
rot = qOff * pRot * quatFromDir(vec3(0,0,1), self.normal)
elseif alignMode == 'absolute' then
alignMode = alignMode or "terrain"
local rot = quatFromDir(self.normal:z0())
local up = vec3(0,0,1)
@/lua/ge/extensions/gameplay/rally/tools/loopToolbox.lua
-- local pos = center + rot * vec3(0, -15, 0)
-- local camRot = quatFromDir(center - pos)
-- core_camera.setPosRot(0, pos.x, pos.y, pos.z, camRot.x, camRot.y, camRot.z, camRot.w)
-- local pos = center + rot * vec3(0, -15, 0)
-- local camRot = quatFromDir(center - pos)
-- core_camera.setPosRot(0, pos.x, pos.y, pos.z, camRot.x, camRot.y, camRot.z, camRot.w)
@/lua/ge/extensions/editor/tech/roadArchitect/staticMeshMgr.lua
gView:set(0.0, -meshRad * auditionPlanarDistFac, auditionHeight + meshRad * auditionElevationFac)
local gRot = quatFromDir(auditionVec - gView)
commands.setFreeCamera()
auditionCamPos:set(x * c - y * s, x * s + y * c, gView.z)
local gRot = quatFromDir(auditionVec - auditionCamPos)
core_camera.setPosRot(0, auditionCamPos.x, auditionCamPos.y, auditionCamPos.z, gRot.x, gRot.y, gRot.z, gRot.w)
@/lua/ge/extensions/editor/gen/exp_solidflex.lua
core_camera.setPosition(0, ccampos)
core_camera.setRotation(0, quatFromDir(focus - ccampos, vec3(0,0,1)))
end
core_camera.setPosition(0, focus + rnew)
core_camera.setRotation(0, quatFromDir(focus - core_camera.getPosition(), vec3(0,0,1)))
local ami1,ami2,vmi1,vmi2
@/lua/ge/extensions/util/maptiles.lua
-- Use the same camera orientation as before
local q = quatFromDir(vec3(0, 0, -1), vec3(0, 1, 0))
q = QuatF(q.x, q.y, q.z, q.w)
@/lua/ge/extensions/core/cameraModes/onboard.lua
data.res.pos = carPos + nodePos
data.res.rot = quatFromDir(vecY, vecZ)
return false
local qdir = quatFromDir(dir)
rotatedUp:setRotate(qdir, vecZ)
@/lua/ge/extensions/editor/roadDecorations.lua
local rotation = quatFromDir(flatDir)
rotation = rightPoint['rotation']
rotation = rightPoint['rotation'] * quatFromDir(vec3(0, -1, 0))
@/lua/ge/extensions/editor/aiTests.lua
v.pos:set(obj:getPosition())
v.rot:set(quatFromDir(obj:getDirectionVector(), obj:getDirectionVectorUp()) * quat(0, 0, 1, 0))
@/lua/ge/extensions/editor/raceEditor/pacenotes.lua
if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
local q = quatFromDir(note.normal, vec3(0,0,1))
rotation = QuatF(q.x, q.y, q.z, q.w)
if note.normal then
self.beginDragRotation = deepcopy(quatFromDir(note.normal, vec3(0,0,1)))
end
@/lua/ge/extensions/core/cameraModes/unicycle.lua
local function getRotVecFromFrontUp(front, up)
local initialLookDir = quatFromDir(front, up)
local rotEuler = initialLookDir:toEulerYXZ()
@/lua/ge/extensions/gameplay/crawl/utils.lua
local vehiclePos = veh:getPosition()
local vRot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
local vehDirUp = state.crawlerData.dynamicData.vehDirectionVectorUp
local vehRot = quatFromDir(vehDir, vehDirUp)
@/lua/ge/extensions/freeroam/crashCamMode.lua
local m1 = { fov = core_camera.getFovDeg(), movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = core_camera.getQuat(), time = 0, trackPosition = false, nearClip = nil }
local m2 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset1, rot = quatFromDir(-offset1), time = markerTimeOffset, trackPosition = false, nearClip = nil }
local m3 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset2, rot = quatFromDir(-offset2), time = markerTimeOffset * 2, trackPosition = false, nearClip = nil }
local m2 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset1, rot = quatFromDir(-offset1), time = markerTimeOffset, trackPosition = false, nearClip = nil }
local m3 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset2, rot = quatFromDir(-offset2), time = markerTimeOffset * 2, trackPosition = false, nearClip = nil }
local m4 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset3, rot = quatFromDir(-offset3), time = markerTimeOffset * 3, trackPosition = false, nearClip = nil }
local m3 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset2, rot = quatFromDir(-offset2), time = markerTimeOffset * 2, trackPosition = false, nearClip = nil }
local m4 = { fov = 50, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = adjustedHitPoint + offset3, rot = quatFromDir(-offset3), time = markerTimeOffset * 3, trackPosition = false, nearClip = nil }
local m5 = { fov = core_camera.getFovDeg(), movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = core_camera.getQuat(), time = markerTimeOffset * 4, trackPosition = false, nearClip = nil }
@/lua/ge/extensions/editor/mapSensorEditor.lua
local s = sensors[selectedSensorIdx]
beginDragRotation = quatFromDir(s.dir, s.up)
end
local s = sensors[selectedSensorIdx]
local q = quatFromDir(s.dir, s.up)
rotation = QuatF(q.x, q.y, q.z, q.w)
core_camera.setPosition(0, from)
local rot = quatFromDir(sensor.pos - from, vec3(0, 0, 1))
core_camera.setRotation(0, rot)
@/lua/ge/extensions/editor/trafficSignalsEditor.lua
if instances[selected.signal] then
instances[selected.signal].rot = quatFromDir(instances[selected.signal].dir, vecUp)
oldTransform.pos = vec3(instances[selected.signal].pos)
@/lua/ge/extensions/scenario/waypoints.lua
local vehiclePos = vehicle:getPosition()
local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
local vPos = vehicle:getPosition()
local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
for i, corner in ipairs(vehWpData.wheelOffsets) do
@/lua/ge/extensions/editor/objectTool.lua
local scl = obj:getScale()
local rot = quatFromDir(rayCastInfo.normal)
local mtx = MatrixF(0)
@/lua/ge/extensions/career/modules/inventory.lua
pos = camPos,
rot = quatFromDir(bbCenter - camPos),
filename = filename,
local model, config = "covet","vehicles/covet/covet_tutorial.pc"
local pos, rot = vec3(-24.026,609.157,75.112), quatFromDir(vec3(1,0,0))
local options = {config = config, licenseText = "TUTORIAL", vehicleName = "TutorialVehicle", pos = pos, rot = rot}
@/lua/ge/extensions/flowgraph/modules/prefabModule.lua
-- get current position and rotation
vehicleTransforms[k] = {pos = veh:getPosition(), rot = quat(0, 0, 1, 0) * quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())}
end
@/lua/ge/extensions/editor/scriptAIEditor.lua
local height = groundDist / tan(halfFov) + zMax + 5.0 -- The height that the camera should be to fit all the trajectory in view.
local rot = quatFromDir(vec3(0, 0, -1))
commands.setFreeCamera()
table.clear(cwd.nodes)
local rot = quatFromDir(vec3(0, 0, -1))
rot:normalize()
@/lua/ge/extensions/flowgraph/nodes/vehicle/alignForCoupling.lua
if self.pinIn.relativeRotationQuat.value then
desiredRot = desiredRot * quatFromDir(vec3(v1:getDirectionVector()), vec3(v1:getDirectionVectorUp()))
else
@/lua/ge/extensions/editor/sitesEditor/zones.lua
if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
local q = quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1))
rotation = QuatF(q.x, q.y, q.z, q.w)
if self.currentPlane then
self.beginDragRotation = deepcopy(quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1)))
end
@/lua/ge/server/commands.lua
camDir.z = 0
local camRot = quatFromDir(camDir, vec3(0,0,1))
local rot = quat(0, 0, 1, 0) * camRot -- vehicles' forward is inverted
camDir.z = 0
local camRot = quatFromDir(camDir, vec3(0,0,1))
camRot = quat(0, 0, 1, 0) * camRot -- vehicles' forward is inverted
@/lua/ge/extensions/gameplay/police.lua
placeRoadblock(newVehIds, spawnData.pos, quatFromDir(spawnData.dir, spawnData.normal), {angle = angle, centerAngle = 0, width = rbWidth})
if newPropIds then
if newPropIds then
placeRoadblock(policePropIds, spawnData.pos - spawnData.dir * (maxPropLength * 0.5 + 2), quatFromDir(spawnData.dir, spawnData.normal), {angle = -90, width = rbWidth})
end
@/lua/ge/extensions/scenario/raceMarkers/attention.lua
local fwd = (playerPosition-self.pos)
local rot = (quatFromDir(fwd:z0())):toTorqueQuat()
self.left:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/lua/ge/extensions/util/procTrack.lua
--pos = pos
rot = quatFromDir(vec3(-rot.x,-rot.y))
scenario.startingTransforms['scenario_player0'].pos = pos
@/lua/ge/extensions/editor/raceEditor/pathnodes.lua
if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
local q = quatFromDir(node.normal, vec3(0,0,1))
rotation = QuatF(q.x, q.y, q.z, q.w)
if node.normal then
self.beginDragRotation = deepcopy(quatFromDir(node.normal, vec3(0,0,1)))
end
if hovered.normal then
self.beginDragRotation = deepcopy(quatFromDir(hovered.normal, vec3(0,0,1)))
end
local sp = data.self.path.startPositions:create(nil, data.spid or nil)
sp:set(data.pos, quatFromDir(data.normal):normalized())
sp.name = node.name .. " Recovery " .. (reverse and "Reverse" or "Forward")
@/lua/ge/extensions/gameplay/discover.lua
-- use this to get the position, rotation and partConfig of all vehicles
for id in activeVehiclesIterator() do local veh = scenetree.findObjectById(id) print(veh) dump({veh:getPosition(), quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()), veh.jbeam, veh.partConfig}) end
]]
@/lua/ge/extensions/gameplay/crawl/boundary.lua
local dirVec = (endPos - startPos):normalized()
local rot = quatFromDir(dirVec, worldUp)
table.insert(points, {pos = pos, rot = rot})
@/lua/ge/extensions/editor/raceEditor/startPositions.lua
local q = quatFromDir(normal, vec3(0,0,1))
local x, y, z = q * vec3(1,0,0), q * vec3(0,3,0), q * vec3(0,0,1)
sp:set(data.mouseInfo._downPos,
quatFromDir(data.mouseInfo._upPos - data.mouseInfo._downPos):normalized(), vec3(0,0,1))
data.spid = sp.id
normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
sp.rot = quatFromDir((sp.pos - normalTip):normalized(), vec3(0,0,1))
self:updateTransform(self.index)
@/lua/ge/extensions/editor/toolUtilities/gizmo.lua
tmpTan:normalize()
beginDragRot = quatFromDir(tmpTan, spline.nmls[nodeIdx])
end
tmpTan:normalize()
local q = quatFromDir(tmpTan, spline.nmls[nodeIdx])
rotation.x, rotation.y, rotation.z, rotation.w = q.x, q.y, q.z, q.w
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/vePropTransformer.lua
-- Vehicle coordinates -> Prop coordinates
local rot = quatFromDir(-dirFront, dirUp)
local axisGizmoPos = quatFromDir(-dirFront, dirUp) * (baseTranslationJBeamCoords - refPos)
axisGizmoPos:setAdd(vEditor.vehiclePos)
local refPos = vEditor.vdata.nodes[vEditor.vdata.refNodes[0].ref].pos
local rot = quatFromDir(-dirFront, dirUp)
local refPos = vEditor.vdata.nodes[vEditor.vdata.refNodes[0].ref].pos
local rot = quatFromDir(-dirFront, dirUp)
@/lua/ge/extensions/editor/toolUtilities/meshAuditionMgr.lua
gView:set(0.0, -meshRad * auditionPlanarDistFac, auditionHeight + meshRad * auditionElevationFac)
local gRot = quatFromDir(auditionVec - gView)
commands.setFreeCamera()
tmp1:set(auditionVec.x - auditionCamPos.x, auditionVec.y - auditionCamPos.y, auditionVec.z - auditionCamPos.z)
local gRot = quatFromDir(tmp1)
core_camera.setPosRot(0, auditionCamPos.x, auditionCamPos.y, auditionCamPos.z, gRot.x, gRot.y, gRot.z, gRot.w)
@/lua/ge/extensions/core/recoveryPrompt.lua
if veh then
spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector()), nil, nil, nil, nil, false )
local invVehId = career_modules_inventory.getInventoryIdFromVehicleId(target.vehId)
else
spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector()), nil, nil, nil, nil, true )
end
@/lua/ge/extensions/scenario/raceMarkers/sideHologramMarker.lua
local dir = (self.nextPos - self.pos):normalized()
local rot = quatFromDir(dir)
local rotQuat = rot:toTorqueQuat()
-- Calculate side positions with ground raycasts
local rot = quatFromDir(self.normal:z0())
local up = vec3(0,0,1)
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veView.lua
if view.mode == 'left' then
view.rot = quatFromDir(vec3(-1,0,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(10, 0, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'right' then
view.rot = quatFromDir(vec3(1,0,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(-3, 0, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'front' then
view.rot = quatFromDir(vec3(0,1,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0, -3, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'back' then
view.rot = quatFromDir(vec3(0,-1,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0, 6, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'top' then
view.rot = quatFromDir(vec3(0,0,-1), vec3(1,0,0))
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0, 0, 5)
view.rot = quatFromDir(vec3(0,0,-1), fwd)
--view.rot = quatFromDir(focusPos - view.pos, vecUp)
view.rot = quatFromDir(vec3(0,0,-1), fwd)
--view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'bottom' then
view.rot = quatFromDir(vec3(0,0,1), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0.01, 0.01, -5)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
@/lua/ge/extensions/core/cameraModes/path.lua
end
local targetRotation = quatFromDir(target - pos, vec3(0,0,1))
@/lua/ge/extensions/gameplay/rally/notebook/pacenote.lua
local up = vec3(0,0,1)
local rot = quatFromDir(fwd, up):normalized()
@/lua/ge/extensions/gameplay/sites/parkingSpot.lua
normalTip = vec3(normalTip.x, normalTip.y, core_terrain.getTerrainHeight(normalTip))
self.rot = quatFromDir((center - normalTip):normalized(), (flU-bl):normalized())
else
else
self.rot = quatFromDir((fl - bl):normalized(), (flU-bl):normalized())
end
@/lua/ge/extensions/gameplay/traffic.lua
local normal = map.surfaceNormal(pos, 1)
local rot = quatFromDir(vecY:rotated(quatFromDir(dir, normal)), normal)
local normal = map.surfaceNormal(pos, 1)
local rot = quatFromDir(vecY:rotated(quatFromDir(dir, normal)), normal)
local newPos, newRot = gameplay_traffic_trafficUtils.finalizeSpawnPoint(spawnData.pos, spawnData.dir, spawnData.n1, spawnData.n2, {legalDirection = true})
newRot = quatFromDir(newRot, map.surfaceNormal(newPos))
respawnVehicle(id, newPos, newRot)
@/lua/ge/extensions/flowgraph/nodes/vehicle/recoverInPlace.lua
veh:resetBrokenFlexMesh()
spawn.safeTeleport(veh, veh:getPosition(),quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()))
end
@/lua/ge/extensions/career/modules/painting.lua
core_vehicleBridge.executeAction(getPlayerVehicle(0),'setFreeze', false)
gameplay_walk.setWalkingMode(true, walkingPositionBefore, quatFromDir(vehPos - walkingPositionBefore))
walkingPositionBefore = nil
@/lua/ge/extensions/editor/buildingEditor.lua
]]
-- core_camera.setRotation(0, quatFromDir(vec3(0, -1, -1),vec3(0,0,1)))
-- core_camera.setPosition(0, vec3(0, 40, 60))
local pos = vec3(0, 0, 5) - 2*vec3(0, -10, -1)
local q = quatFromDir(vec3(0, -10, -1),vec3(0,0,1))
@/lua/ge/extensions/core/multiSpawn.lua
newRot = quatFromDir(vecY:rotated(quatFromDir(newRot:z0(), vecUp)), vecUp)
newRot = quatFromDir(vecY:rotated(quatFromDir(newRot:z0(), vecUp)), vecUp)
@/lua/ge/extensions/core/cameraModes/fallback.lua
data.res.pos = data.res.pos or data.pos -- camera position
data.res.rot = data.res.rot or quatFromDir(data.pos) -- direction towards target
end
@/lua/ge/extensions/ui/liveryEditor/camera.lua
core_camera.setPosition(0, layer.camPosition + veh:getPosition())
core_camera.setRotation(0, quatFromDir(layer.camDirection))
end
@/lua/ge/extensions/flowgraph/nodes/mission/postClean.lua
spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()), nil, nil, nil, nil, doRepair)
end
@/lua/ge/extensions/gameplay/markers/missionMarker.lua
local toCamera = (data.camPos - tmpVec):z0():normalized()
local rot = quatFromDir(toCamera):toTorqueQuat()
meshObj:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/gameplay/missionTypes/collection/customNodes/collectionNode.lua
pos = marker.pos,
rot = quatFromDir(-1*veh:getDirectionVector())
}
@/lua/ge/spawn.lua
pos = veh:getPosition()
rot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
end
-- Find the rotation that puts the vehicle correctly in the driving direction
rot = quatFromDir(drivingDir * legalSide * roadSide, n1.normal)
break
pos = n1.pos
rot = quatFromDir(n1.pos - n2.pos, n1.normal)
end
pos = veh:getPosition()
rot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
end
@/lua/ge/extensions/gameplay/taxi.lua
local direction = (path[i+1].pos - marker.pos):normalized()
skipRotation = quatFromDir(direction, vec3(0, 0, 1))
end
@/lua/ge/extensions/core/groundMarkerArrows.lua
local pos = path[i].pos + arrowHeight
local rot = quatFromDir(dirNextPoint, upVec)
-- Update proxy
@/lua/ge/extensions/gameplay/rally/driveline/drivelineV3.lua
local actualUp = right:cross(dir):normalized()
local quat = quatFromDir(dir, actualUp)
@/lua/ge/extensions/core/cameraModes/crash.lua
data.res.pos = driverPos
data.res.rot = quatFromDir(bb1:getCenter() - driverPos)
data.res.fov = 40
data.res.pos = self.hitPoint + self.camOffset
data.res.rot = quatFromDir(-self.camOffset)
data.res.fov = 50
data.res.pos = vec3(self.camPos)
data.res.rot = quatFromDir(self.hitPoint - self.camPos)
data.res.fov = self.fov
@/lua/ge/extensions/core/cameraModes/predictor.lua
data.res.targetPos:setAdd(self.dtFuture * data.vel)
data.res.rot = quatFromDir((data.res.targetPos - data.res.pos):normalized())
return true
@/lua/ge/extensions/c2/panelPlugins/vehicleManager.lua
local up = vec3(veh:getDirectionVectorUpXYZ())
local rot = quatFromDir(dir, up)
local vel = veh:getVelocity()
@/lua/ge/extensions/editor/rallyEditor/pacenotes.lua
if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
local q = quatFromDir(wp.normal, vec3(0,0,1))
rotation = QuatF(q.x, q.y, q.z, q.w)
if wp.normal then
self.beginDragRotation = deepcopy(quatFromDir(wp.normal, vec3(0,0,1)))
end
@/lua/ge/extensions/core/quickAccess.lua
onSelect = function()
spawn.safeTeleport(playerVeh, playerVeh:getPosition(), quatFromDir(playerVeh:getDirectionVector()), nil, nil, nil, nil, false )
extensions.hook('onVehicleFlippedUpright', playerVeh:getID())
getPlayerVehicle(0):resetBrokenFlexMesh()
spawn.safeTeleport(getPlayerVehicle(0), getPlayerVehicle(0):getPosition(), quatFromDir(getPlayerVehicle(0):getDirectionVector(), getPlayerVehicle(0):getDirectionVectorUp()), nil, nil, nil, nil, true)
return {"hide"}
veh:resetBrokenFlexMesh()
spawn.safeTeleport(veh, veh:getPosition(),quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp()))
end
@/lua/ge/extensions/gameplay/race/race.lua
local vehiclePos = vehicle:getPosition()
local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
local vehiclePos = veh:getPosition()
local vRot = quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
@/lua/ge/extensions/scenario/raceMarkers/overhead.lua
--local side = fwd:cross(vec3(0,0,1))
local rot = quatFromDir(fwd:z0()):toTorqueQuat()
self.arrow:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/lua/ge/extensions/tech/impactgen/crashOutput.lua
local camDir = vec3(-camPos.x, -camPos.y, -camPos.z)
local camRot = quatFromDir(camDir, vec3(0, 0, 1))
camPos = camPos + origin
@/lua/ge/extensions/career/modules/testDrive.lua
local finalPos = oobb:getPoint(0) + (dir * 1.3)
gameplay_walk.setWalkingMode(true, finalPos, quatFromDir(-dir, vec3(0,0,1)))
else
@/lua/ge/extensions/editor/toolUtilities/util.lua
local globalDown = vec3(0, 0, -1)
local camLookDownRot = quatFromDir(globalDown)
@/lua/ge/extensions/flowgraph/nodes/vehicle/flipUpright.lua
if veh then
spawn.safeTeleport(veh, veh:getPosition(), quatFromDir(veh:getDirectionVector()), nil, nil, nil, nil, false )
extensions.hook('onVehicleFlippedUpright', veh:getID())
@/lua/ge/extensions/scenario/raceMarkers/ringMarker.lua
local fwd = self.normal and self.normal or vec3(0,0,1)
local rot = quatFromDir(fwd:z0()):toTorqueQuat()
local up = wp.up or vec3(0,0,1)
local rot = quatFromDir(fwd, up):toTorqueQuat()
self.ring:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/lua/ge/extensions/core/cameraModes/topDown.lua
-- then look from camera position to target :)
local qdir = quatFromDir((targetPos - camPos):normalized())
@/lua/ge/extensions/gameplay/rally/vehicleCapture.lua
local vehPos = self.vehicle:getPosition()
local vehRot = quatFromDir(self.vehicle:getDirectionVector(), self.vehicle:getDirectionVectorUp())
local now = rallyUtil.getTime()
@/lua/vehicle/ai.lua
local up = mapmgr.surfaceNormalBelow(pos)
local rot = quatFromDir(-dir:cross(up):cross(up), up) -- minus sign is due to convention used by safeTeleport
if dir then
local rot = quatFromDir(dir:cross(up):cross(up), up)
obj:queueGameEngineLua(
@/lua/ge/extensions/editor/renderTest.lua
--rot = quatFromDir(vec3(0,0,-1), vecUp)
if focusPos then
@/lua/ge/extensions/editor/sensorConfigurationEditor.lua
local dir, up = util.sensor2VS(s.dir, s.up, veh)
beginDragRotation = quatFromDir(dir, up)
end
local dir, up = util.sensor2VS(s.dir, s.up, veh)
local q = quatFromDir(dir, up)
rotation = QuatF(q.x, q.y, q.z, q.w)
@/lua/ge/extensions/editor/camPathEditor.lua
end
local targetRotation = quatFromDir(target - pos, zVector)
local r1 = lastCtrlPointsR2[i] or (markers[n1].trackPosition and targetRotation or markers[n1].rot)
end
markerCopy.rot = quatFromDir(target - markerCopy.pos, zVector)
end
@/gameplay/missionTypes/cannon/customNodes/cannonBallInfoNode.lua
local targetCamPos = pos - (pos - core_camera.getPosition()):normalized() * 15 --pos + (targetCamOff:normalized()) * camDist
local targetCamRot = quatFromDir(pos - targetCamPos, vec3(0,0,1))
self.pinOut.camOffsetPos.value = (pos - targetCamPos):toTable()
@/lua/ge/extensions/freeroam/bigMapMode.lua
end
local rot1 = quatFromDir(vec3(-1,0,0), vec3(0,0.6,1))
local rot2 = quatFromDir(vec3(0,1,0), vec3(0.6,0,1))
local rot1 = quatFromDir(vec3(-1,0,0), vec3(0,0.6,1))
local rot2 = quatFromDir(vec3(0,1,0), vec3(0.6,0,1))
local rot3 = quatFromDir(vec3(1,0,0), vec3(0,-0.6,1))
local rot2 = quatFromDir(vec3(0,1,0), vec3(0.6,0,1))
local rot3 = quatFromDir(vec3(1,0,0), vec3(0,-0.6,1))
local rot4 = quatFromDir(vec3(0,-1,0), vec3(-0.6,0,1))
local rot3 = quatFromDir(vec3(1,0,0), vec3(0,-0.6,1))
local rot4 = quatFromDir(vec3(0,-1,0), vec3(-0.6,0,1))
mapBoundsFogPool[1]:setPosRot(edgePoint1.x, edgePoint1.y, edgePoint1.z, rot1.x, rot1.y, rot1.z, rot1.w)
local camMode = core_camera.getGlobalCameras().bigMap
bigMapCamRotation = quatFromDir(vec3(0,0,-1), yVector)
bigMapCamRotation = quatFromAxisAngle(xVector, -(90 - camMode.angle) / 180 * math.pi):__mul(bigMapCamRotation)
local camDir = core_camera.getQuat() * yVector
local downwardsRot = quatFromDir(vec3(0,0,-1), camDir)
local m1 = { fov = core_camera.getFovDeg(), movingEnd = true, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = core_camera.getQuat(), time = 0, trackPosition = false, nearClip = previousNearClip }
local playerCamDir = endMarkerData.rot * yVector
local downwardsRot = quatFromDir(vec3(0,0,-1), playerCamDir)
local m1 = { fov = core_camera.getFovDeg(), movingEnd = true, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = core_camera.getQuat(), time = 0, trackPosition = false, nearClip = camMode.nearClipValue }
@/lua/ge/extensions/editor/gen/world.lua
-- lo('?? for_DIR:'..tostring(wall.u)..':'..tostring(wall.v)..':'..tostring(dir))
local q = quatFromDir(dir, vec3(0,0,1))
local rot = QuatF(q.x,q.y,q.z,q.w)
local rot = QuatF(q.x,q.y,q.z,q.w)
-- rot = quatFromDir(vec3(-1,0,0), vec3(0,0,1))
local mat = rot:getMatrix()
end
core_camera.setRotation(0, quatFromDir(newdir, vec3(0,0,1)))
-- lo('?? around:'..tostring(indrag))
-- turn camera in direction of dirnew
core_camera.setRotation(0, quatFromDir(dirnew, vec3(0,0,1)))
core_camera.setPosition(0, newpos)
core_camera.setRotation(0, quatFromDir(newdir, vec3(0,0,1)))
]]
-- core_camera.setRotation(0, vec3(0,0,math.pi/4))
-- core_camera.setRotation(0, quatFromDir(vec3(0, -10, -1),vec3(0,0,1)))
core_camera.setRotation(0, quatFromDir(vec3(0, -10, 4), vec3(0,0,1)))
-- core_camera.setRotation(0, quatFromDir(vec3(0, -10, -1),vec3(0,0,1)))
core_camera.setRotation(0, quatFromDir(vec3(0, -10, 4), vec3(0,0,1)))
end
@/lua/ge/extensions/flowgraph/nodes/scene/camera/procedural/procDirectPath.lua
fwd = fwd:normalized()
local fq = quatFromEuler(math.pi / 4, 0, 0) * quatFromDir(fwd)
local d = fq * vec3(0, -12, 0)
mid.rot = (quatFromEuler(math.pi * 0.3, 0, 0) * quatFromDir(fwd)):slerp(quatFromDir(tt, tu), 1)
mid.time = duration / 14 * 7
mid.rot = (quatFromEuler(math.pi * 0.3, 0, 0) * quatFromDir(fwd)):slerp(quatFromDir(tt, tu), 1)
mid.time = duration / 14 * 7
mid2.pos = mid.pos
mid2.rot = quatFromDir(tt, tu)
mid2.time = duration / 14 * 10.5
out.pos = mid.pos
out.rot = quatFromDir(tt, tu)
out.time = duration / 14 * 15.5
@/lua/ge/extensions/tech/techCore.lua
local direction = request['dir']
local rot = quatFromDir(vec3(direction[1], direction[2], direction[3]))
local vehicleData = map.objects[obj.id]
rot = quatFromDir(vehicleData.dirVec, vehicleData.dirVecUp)
end
local vDir, vUp = vec3(dir[1], dir[2], dir[3]), vec3(up[1], up[2], -up[3])
local rot = quatFromDir(vDir, vUp):toEulerYXZ() * 57.29578 -- rad to deg.
core_camera.setRotation(vid, rot)
@/lua/ge/extensions/core/vehicle/mirror.lua
local camPos = veh:getInitialNodePosition(core_camera.getDriverDataById(vid))
local rot = quatFromDir( (camPos-mpos) , vec3(0,0,1) )
local eu = rot:toEulerYXZ()
@/lua/ge/extensions/core/cameraModes/handheld.lua
end
data.res.rot = quatFromDir(self.dir, up)
return true
@/lua/vehicle/bdebugImpl.lua
local initRefNodePos = v.data.nodes[v.data.refNodes[0].ref].pos
local rot = quatFromDir(-obj:getDirectionVector(), obj:getDirectionVectorUp())
local relCOGPos = rot:inversed() * (p - vehPos) + initRefNodePos
@/lua/ge/extensions/editor/tech/roadArchitect/groups.lua
gView:set(0.0, -r * auditionPlanarDistFac, auditionHeight + r * auditionElevationFac)
local gRot = quatFromDir(auditionVec - gView)
commands.setFreeCamera()
auditionCamPos:set(x * c - y * s, x * s + y * c, gView.z)
local gRot = quatFromDir(auditionVec - auditionCamPos)
core_camera.setPosRot(0, auditionCamPos.x, auditionCamPos.y, auditionCamPos.z, gRot.x, gRot.y, gRot.z, gRot.w)
local height = groundDist / tan(halfFov) + zMax + 5.0 -- The height that the camera should be to fit all the trajectory in view.
local rot = quatFromDir(vec3(0, 0, -1))
@/lua/ge/extensions/gameplay/discover/discover_037.lua
local pos = vehicle:getPosition()
local rot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
-- Create a point at the bottom center in local space (Z is up/down)
@/lua/ge/extensions/editor/crawlEditor/missionPortTool.lua
if direction:length() > 0.001 then
rotation = quatFromDir(direction, vec3(0, 0, 1))
log('D', logTag, string.format("Calculated start rotation pointing to first checkpoint (distance: %.2f)", direction:length()))
@/lua/ge/extensions/core/ropeVisualTest.lua
local lookDir = (vec3(centerX, centerY, centerZ) - cameraPos):normalized()
local camLookFrontRot = quatFromDir(lookDir)
@/lua/ge/extensions/editor/levelValidator.lua
local pos = center + rot * vec3(0, -15, 0)
local rot = quatFromDir(center - pos)
if pos.x ~= 0 or pos.y ~=0 or pos.z ~= 0 then
@/lua/ge/extensions/core/cameraModes/chase.lua
data.res.pos = data.pos
data.res.rot = quatFromDir(vecY, vecZ)
return false
local qdir_heading = quatFromDir(-dir, up)
calculatedCamPos = qdir_heading * calculatedCamPos
local dir_target = (targetPos - camPos); dir_target:normalize()
local qdir_target = quatFromDir(dir_target, up)
@/lua/ge/extensions/editor/tech/roadArchitect/roads.lua
local height = groundDist / tan(halfFov) + zMax + 5.0 -- The height that the camera should be to fit all the trajectory in view.
local rot = quatFromDir(vec3(0, 0, -1))
gView:set(0.0, 30.0, auditionHeight + 15.0)
local gRot = quatFromDir(auditionVec - gView)
commands.setFreeCamera()
auditionCamPos:set(x * c - y * s, x * s + y * c, gView.z)
local gRot = quatFromDir(auditionVec - auditionCamPos)
core_camera.setPosRot(0, auditionCamPos.x, auditionCamPos.y, auditionCamPos.z, gRot.x, gRot.y, gRot.z, gRot.w)
@/lua/ge/extensions/flowgraph/nodes/scene/rectMarker.lua
pos = vec3(hit.pt) + zVec*0.05
r = r* qOff*quatFromDir(vec3(hit.norm), yVec)
else
pos = corner + zVec*0.05
r = r*qOff *quatFromDir(zVec, yVec)
end
@/lua/ge/extensions/editor/crawlEditor/waypoints.lua
if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
local q = quatFromDir(node.normal, vec3(0,0,1))
rotation = QuatF(q.x, q.y, q.z, q.w)
if node.hasNormal and node.normal then
self.beginDragRotation = deepcopy(quatFromDir(node.normal, vec3(0,0,1)))
end
@/lua/ge/extensions/flowgraph/nodes/scene/camera/cameraAutoRotate.lua
local camPos = core_camera.getPosition()
local camRot = quatFromDir(vec3(self.pinIn.position.value) - camPos, vecUp)
core_camera.setPosRot(0, camPos.x, camPos.y, camPos.z, camRot.x, camRot.y, camRot.z, camRot.w)
@/lua/ge/extensions/core/cameraModes/pacenoteOrbit.lua
data.res.pos = camPos
data.res.rot = quatFromDir(targetPos - camPos)
data.res.fov = self.fov
@/lua/ge/extensions/gameplay/drag/utils.lua
racer.vehDirectionVectorUp:set(racer.vehObj:getDirectionVectorUpXYZ())
racer.vehRot = quatFromDir(racer.vehDirectionVector, racer.vehDirectionVectorUp)
@/lua/ge/extensions/scenario/raceMarkers/singleHologramMarker.lua
local rot = quatFromDir(self.normal:z0())
local up = vec3(0,0,1)
@/lua/ge/extensions/core/checkpoints.lua
local upVec = vehicleCheckpoints[vehId].upVec
local rot = quatFromDir(-dirVec, upVec)
-- log('I', logTag, 'dirVec: '..tostring(dirVec))
@/lua/ge/extensions/flowgraph/nodes/scene/camera/cameraCircle.lua
local q = quatFromDir(self.centerPos - self.camPos, vecUp)
core_camera.setPosRot(0, self.camPos.x, self.camPos.y, self.camPos.z, q.x, q.y, q.z, q.w)
@/lua/ge/extensions/editor/api/camera.lua
local pos = core_camera.getPosition()
core_camera.setRotation(0, quatFromDir(pt - pos))
end
local pos = center + rot * vec3(0, -15, 0)
local rot = quatFromDir(center - pos)
core_camera.setPosRot(0, pos.x, pos.y, pos.z, rot.x, rot.y, rot.z, rot.w)
local tempTarget = camVars.camStartPos + step * currentStepPos
local rot = quatFromDir(camVars.center - camVars.camEndPos)
core_camera.setPosRot(0, tempTarget.x, tempTarget.y, tempTarget.z, rot.x, rot.y, rot.z, rot.w)
@/lua/ge/extensions/editor/crawlEditor/startingPositions.lua
-- Create rotation from direction and surface normal
local rot = quatFromDir(fwd, self._placementTemp.downNormal):normalized()
self.startingPosition.transform.rotation = rot
@/lua/ge/extensions/editor/raceEditor.lua
local sp = newPath.startPositions:create()
sp:set(pn.pos, quatFromDir(pn.normal):normalized())
sp.name = pn.name .. " Recovery Forward"
local spr = newPath.startPositions:create()
spr:set(pn.pos, quatFromDir(pn.normal*-1):normalized())
spr.name = pn.name .. " Recovery Reverse"
@/lua/ge/extensions/gameplay/rally/vehicleTracker.lua
local vehiclePos = vehicle:getPosition()
local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
local x,y,z = vRot * vec3(1,0,0),vRot * vec3(0,1,0),vRot * vec3(0,0,1)
-- local vPos = vehicle:getPosition()
-- local vRot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
-- for i, corner in ipairs(self.wheelOffsets) do
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua
self.flagLeft:setPosition(vec3(leftPos))
local flagRot = quatFromDir(rightDir, terrainUp)
self.flagLeft:setField('rotation', 0, flagRot.x .. ' ' .. flagRot.y .. ' ' .. flagRot.z .. ' ' .. flagRot.w)
self.flagRight:setPosition(vec3(rightPos))
local flagRot = quatFromDir(-rightDir, terrainUp)
self.flagRight:setField('rotation', 0, flagRot.x .. ' ' .. flagRot.y .. ' ' .. flagRot.z .. ' ' .. flagRot.w)
local fwd = (playerPosition-self.pos)
local rot = quatFromDir(fwd:z0()):toTorqueQuat()
self.arrow:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/lua/ge/extensions/editor/sceneView.lua
if view.mode == 'left' then
view.rot = quatFromDir(vec3(-1,0,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(10, 0, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'right' then
view.rot = quatFromDir(vec3(1,0,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(-3, 0, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'front' then
view.rot = quatFromDir(vec3(0,1,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0, -3, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'back' then
view.rot = quatFromDir(vec3(0,-1,0), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0, 6, 0)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'top' then
view.rot = quatFromDir(vec3(0,0,-1), vec3(1,0,0))
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0, 0, 5)
view.rot = quatFromDir(vec3(0,0,-1), fwd)
--view.rot = quatFromDir(focusPos - view.pos, vecUp)
view.rot = quatFromDir(vec3(0,0,-1), fwd)
--view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
elseif view.mode == 'bottom' then
view.rot = quatFromDir(vec3(0,0,1), vecUp)
if view.mouseDragging0 and view.lastMouseDragPos then
view.pos = focusPos + focusRot * vec3(0.01, 0.01, -5)
view.rot = quatFromDir(focusPos - view.pos, vecUp)
_drawgrid(gridSize, view.rot, focusPos - focusRot * view.dragOffset, gridLineWidth)
@/lua/ge/extensions/util/screenshotCreator.lua
local camRot = quatFromDir(bbCenter - (axis1 * halfExtentsY / 8) - finalCamPos)
-- un-rotate the camera rotation (remove vehicle rotation)
local vehicleRotation = quatFromDir(bb:getAxis(1), bb:getAxis(2))
local vehicleRotationInverse = vehicleRotation:inversed()
-- rotate the camera rotation by the car rotation
local vehicleRotation = quatFromDir(bb:getAxis(1), bb:getAxis(2))
local finalRot = rotOffset * vehicleRotation
@/lua/ge/extensions/editor/tech/roadArchitect/junctions.lua
local height = groundDist / tan(halfFov) + zMax + 5.0 -- The height that the camera should be to fit all the trajectory in view.
local rot = quatFromDir(vec3(0, 0, -1))
@/lua/ge/extensions/editor/util/transformUtil.lua
local rot = quatFromDir(fwd, mouseInfo._downNormal):normalized()
self:set(mouseInfo._downPos,
local fwd = (self.rot * vec3(0,1,0)):projectToOriginPlane(terrainNormal)
self:set(nil, quatFromDir(fwd, terrainNormal))
end
@/lua/ge/ge_utils.lua
camDir.z = 0
options.rot = quatFromDir(camDir)
else
else
options.rot = quatFromDir(vec3(playerVehicle:getDirectionVector()):normalized(), vec3(playerVehicle:getDirectionVectorUp()):normalized())
end
@/lua/ge/extensions/core/funstuff.lua
local pos = vehicle:getPosition()
local rot = quatFromDir(vehicle:getDirectionVector(), vehicle:getDirectionVectorUp())
-- Create a point at the bottom center in local space (Z is up/down)
@/lua/ge/extensions/editor/createObjectTool.lua
local pos = obj:getPosition()
local rot = quatFromDir(rayCastInfo.normal)
local mtx = MatrixF(0)
@/lua/ge/extensions/career/modules/playerDriving.lua
local playerVehObj = getPlayerVehicle(0)
spawn.safeTeleport(getObjectByID(vehId), playerVehObj:getPosition(), quatFromDir(playerVehObj:getDirectionVector()), nil, nil, nil, nil, false)
core_vehicleBridge.executeAction(getObjectByID(vehId),'setIgnitionLevel', 0)
local vehId = inventory.getVehicleIdFromInventoryId(favoriteVehicleInventoryId)
spawn.safeTeleport(getObjectByID(vehId), playerVehObj:getPosition(), quatFromDir(playerVehObj:getDirectionVector()), nil, nil, nil, nil, false)
end)
local m1 = { fov = 30, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = quatFromDir(targetPos - startPos), time = 0, trackPosition = false }
local m2 = { fov = 30, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = quatFromDir(targetPos - startPos), time = 0.5, trackPosition = false }
local m1 = { fov = 30, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = quatFromDir(targetPos - startPos), time = 0, trackPosition = false }
local m2 = { fov = 30, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = quatFromDir(targetPos - startPos), time = 0.5, trackPosition = false }
local m3 = { fov = core_camera.getFovDeg(), movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = core_camera.getPosition(), rot = endDir and quatFromDir(endDir) or core_camera.getQuat(), time = 5.5, trackPosition = false }
local m2 = { fov = 30, movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = startPos, rot = quatFromDir(targetPos - startPos), time = 0.5, trackPosition = false }
local m3 = { fov = core_camera.getFovDeg(), movingEnd = false, movingStart = false, positionSmooth = 0.5, pos = core_camera.getPosition(), rot = endDir and quatFromDir(endDir) or core_camera.getQuat(), time = 5.5, trackPosition = false }
path.markers = {m1, m2, m3}
@/lua/ge/extensions/editor/cosimulationSignalEditor.lua
local veh = vehicle.veh
local pos, rot = veh:getPosition(), quatFromDir(veh:getDirectionVector(), veh:getDirectionVectorUp())
csv:add('vehicle', nil, 'posX', tostring(pos.x), "number", nil, nil, nil)
@/lua/ge/extensions/gameplay/missions/missionManager.lua
startingInfo.vehPos = veh:getPosition()
startingInfo.vehRot = quatFromDir(vec3(veh:getDirectionVector()), vec3(veh:getDirectionVectorUp()))
startingInfo.vehId = veh:getID()
@/lua/ge/extensions/scenario/busdriver.lua
local currJer = (prevAcc and (currAcc - prevAcc) or vec3()) / dtSim
local acc = currAcc:rotated(quatFromDir(fwd, up):inversed():normalized())
if not smootherAcc then smootherAcc = newTemporalSmoothing(15, 5) end
currPos = currPos + vec3(pv:getNodePosition(0))
local diff = (currPos-busStopPos):rotated(quatFromDir(fwd, up):inversed():normalized())
local stopDistance = diff.y
@/lua/ge/extensions/editor/crawlEditor/boundaries.lua
if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
local q = quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1))
rotation = QuatF(q.x, q.y, q.z, q.w)
if self.currentPlane then
self.beginDragRotation = deepcopy(quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1)))
end
@/lua/ge/extensions/gameplay/rally/cutCapture.lua
local vehPos = self.vehicle:getPosition()
local vehRot = quatFromDir(self.vehicle:getDirectionVector(), self.vehicle:getDirectionVectorUp())
local now = rallyUtil.getTime()