castRayStatic
Definition
-- @/=[C]:-1
function castRayStatic(...)
Callers
@/lua/ge/extensions/editor/api/gui.lua
local rayDir = vec3(0,0,-1)
local rayDist = castRayStatic(rayStart, rayDir, radius*2)
if rayDist < radius*2 then
rayStart.z = rayStart.z + radius
local rayDist = castRayStatic(rayStart, rayDir, radius*2)
if rayDist < radius*2 then
@/lua/ge/extensions/editor/tech/roadArchitect/roadMesh.lua
local p4 = vec3(rD[4].x, rD[4].y, rD[4].z) + raised
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + rD[1].z - rD[4].z
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + rD[2].z - rD[3].z
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + rD[1].z - rD[4].z
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + rD[2].z - rD[3].z
p3.z = p3.z - castRayStatic(p3, downVec, 1000)
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + rD[2].z - rD[3].z
p3.z = p3.z - castRayStatic(p3, downVec, 1000)
p4.z = p4.z - castRayStatic(p4, downVec, 1000)
p3.z = p3.z - castRayStatic(p3, downVec, 1000)
p4.z = p4.z - castRayStatic(p4, downVec, 1000)
local p3 = vec3(rD[4].x, rD[4].y, rD[4].z) + raised
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + rD[2].z - rD[3].z
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + rD[1].z - rD[4].z
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + rD[2].z - rD[3].z
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + rD[1].z - rD[4].z
p3.z = p3.z - castRayStatic(p3, downVec, 1000)
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + rD[1].z - rD[4].z
p3.z = p3.z - castRayStatic(p3, downVec, 1000)
p4.z = p4.z - castRayStatic(p4, downVec, 1000)
p3.z = p3.z - castRayStatic(p3, downVec, 1000)
p4.z = p4.z - castRayStatic(p4, downVec, 1000)
local sTop = p2 - (p2 - p1):normalized() * r.profile[lIdx].kerbWidth[0]
@/lua/vehicle/ai.lua
end
return obj:castRayStatic(rpos, rdir, rayDist)
end
-- cast a ray to see if ego can directly attack player without hitting a barrier
if obj:castRayStatic(ego.pos + ego.upVec * 0.5, (ego.pos - player.pos) / (egoPlDist + 1e-30), egoPlDist) >= egoPlDist then
internalState.road = 'tail'
@/lua/ge/extensions/gameplay/markers/parkingMarker.lua
local rayLength = tmpVec:length()
local iconVisible = castRayStatic(self.iconPos, tmpVec, rayLength, nil) >= rayLength
@/lua/ge/extensions/flowgraph/nodes/scene/raycast.lua
local dist = self.pinIn.dist.value or dir:length()
local hitDist = castRayStatic(pos, dir, dist)
local hitPos = pos + dir:normalized() * hitDist
@/lua/ge/extensions/gameplay/util/groundContact.lua
local distToGround = castRayStatic(oobbCenter, vecDown, raycastLength)
return distToGround <= maxGroundDistance
@/lua/ge/extensions/editor/scriptAIEditor.lua
local ray = getCameraMouseRay()
local dist = castRayStatic(ray.pos, ray.dir, 1000)
local pos = ray.pos + ray.dir * dist
local ray = getCameraMouseRay()
local d = castRayStatic(ray.pos, ray.dir, 1000)
local pos = ray.pos + ray.dir * d
local ray = getCameraMouseRay()
local pos = ray.pos + ray.dir * castRayStatic(ray.pos, ray.dir, 1000.0)
@/lua/ge/extensions/freeroam/crashCamMode.lua
local candidateDistance = candidate:distance(startPos)
if (castRayStatic(candidate, startPos-candidate, candidateDistance) < candidateDistance
or castRayStatic(startPos, candidate-startPos, candidateDistance) < candidateDistance) then
if (castRayStatic(candidate, startPos-candidate, candidateDistance) < candidateDistance
or castRayStatic(startPos, candidate-startPos, candidateDistance) < candidateDistance) then
return findCamPos(startPos, recDepth)
local point = bottomPoints[i]
local hitDist1 = castRayStatic(point, playerVel, rayCastDist, nil)
local point2 = point + playerAxis2 * 0.5
local hitDist2 = castRayStatic(point2, playerVel, rayCastDist * 2, nil)
local hitDist3 = castRayStatic(point, rayCastDir, rayCastDist, nil)
if hitDist3 < rayCastDist then -- horizontal raycast hits
local playerVehNormalized = playerVel:normalized()
local hitDist = castRayStatic(bbCenter, playerVehNormalized, halfExtentsY)
local crashPos = bbCenter + playerVehNormalized * (hitDist - 0.2)
@/gameplay/missionTypes/scatterPickup/customNodes/scatterAnimatorNode.lua
if rayLength < maxDist then
local hitDist = castRayStatic(camPos, tmpVec, rayLength, nil)
if hitDist < rayLength then
@/lua/ge/extensions/career/modules/inspectVehicle.lua
tempVecDir:setSub2(vehObj:getPosition(), playerVehObj:getPosition())
local vehDist = castRayStatic(playerVehObj:getPosition(), tempVecDir, arriveToVehInspectionDist)
if vehDist >= distanceToVeh then
@/lua/ge/extensions/gameplay/markers/crawlMarker.lua
local visible = rayLength < area.maxVisibleDistance and castRayStatic(iconPos, tmpVec, rayLength, nil) >= rayLength
@/lua/ge/extensions/gameplay/markers/gasStationMarker.lua
local rayLength = tmpVec:length()
local hitDist = castRayStatic(data.camPos, tmpVec, rayLength, nil)
local visible = hitDist >= rayLength
@/lua/ge/extensions/core/dynamicProps.lua
dump(targetVecLen)
dump(castRayStatic(actualPos, targetVec:normalized(), targetVecLen))
dump("==============")
dump("==============")
if castRayStatic(actualPos, targetVec:normalized(), targetVecLen) >= targetVecLen then return true end
end
@/lua/ge/extensions/core/cameraModes/external.lua
local dist = dir:length()
local ret = castRayStatic(origin, dir, dist, true)
if ret >= dist then return 0 end
local dist = dir:length()
local hitDistDirect = castRayStatic(origin, dir, dist, true)
local hitDistInverse = castRayStatic(target, -dir, dist, true)
local hitDistDirect = castRayStatic(origin, dir, dist, true)
local hitDistInverse = castRayStatic(target, -dir, dist, true)
local hitDist = math.max(0, math.min(hitDistDirect, hitDistInverse)-earlierDist)
local down = vec3(0,0,-1)
local groundDist = castRayStatic(hitPos, down, minHeight, true)
hitPos = hitPos + down*groundDist + up*minHeight
local dist = dir:length()
local retDirect = castRayStatic(origin, dir, dist, true)
local retInverse = castRayStatic(target, -dir, dist, true)
local retDirect = castRayStatic(origin, dir, dist, true)
local retInverse = castRayStatic(target, -dir, dist, true)
return (retDirect >= dist) and (retInverse >= dist)
@/lua/ge/extensions/core/cameraModes/collision.lua
local rayDist = dirTemp:length()
if castRayStatic(lastNearClipCenter, dirTemp, rayDist) < rayDist then
return true
local dirLength = dirTemp:length()
local distHit = castRayStatic(cornerPos, dirTemp, dirLength)
if distHit < dirLength then
rayStart:setSub2(cornerPos, dir)
local distHit = castRayStatic(rayStart, dir, closestHit)
if distHit < closestHit then
@/lua/ge/extensions/editor/slotTrafficEditor.lua
for nodeId, _ in pairs(editor.selection.stNode) do
local rayDist = castRayStatic(nodeOldPositions[nodeId] + nodeOffset + upVector, downVector, 10)
local newPos = nodeOldPositions[nodeId] + nodeOffset + vec3(0, 0, 1 - math.min(rayDist, 10))
@/lua/ge/extensions/flowgraph/nodes/vehicle/touchingStatic.lua
local dist = v.pos:distance(self.center)
local hitDist = castRayStatic(self.center, v.pos - self.center, dist + 1e-6)
v.hit = hitDist <= dist
@/lua/ge/extensions/editor/tech/roadArchitect/staticMesh.lua
local orig = lData[pIdx] + raised
orig.z = orig.z - castRayStatic(orig, downVec, 1000) + 0.02
posns[ctr] = orig + (vertOffset * nml) + (latOffset * lat)
pL = pL + raised
pL.z = pL.z - castRayStatic(pL, downVec, 1000) + 0.02
end
@/lua/ge/extensions/editor/raceEditor/pathnodes.lua
if core_forest.getForestObject() then core_forest.getForestObject():disableCollision() end
local dist = castRayStatic(rayStart, rayDir, 1000, true)
if core_forest.getForestObject() then core_forest.getForestObject():enableCollision() end
@/lua/ge/extensions/core/cameraModes/unicycle.lua
local dist = dir:length()
local ret = castRayStatic(origin, dir, dist)
if ret >= dist then return end -- default to zero distance from origin
@/lua/ge/extensions/gameplay/markers/inspectVehicleMarker.lua
local rayLength = tmpVec:length()
local iconVisible = castRayStatic(self.iconPos, tmpVec, rayLength, nil) >= rayLength
@/lua/ge/extensions/gameplay/traffic/trafficUtils.lua
tempPos:setScaled(1 / math.max(1e-12, rayDistMax))
local rayDist = castRayStatic(origPos, tempPos, rayDistMax)
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua
local rayLength = rayDirection:length()
if castRayStatic(arrowPos, rayDirection, rayLength, nil) >= rayLength then
targetHeight = testHeight
@/lua/ge/extensions/gameplay/drift/drift.lua
tempVec2:setSub2(tempVec, scannerData.startPoint)
local scanDist = castRayStatic(scannerData.startPoint, tempVec2, driftOptions.wallDetectionLength)
if scannerData.lockDist < driftOptions.wallDetectionLength or scanDist < driftOptions.wallDetectionLength then
scannerData.lockDist = castRayStatic(scannerData.startPoint, tempVec2, driftOptions.wallDetectionLength)
if isBeingDebugged then
@/lua/ge/extensions/editor/roadArchitect.lua
p.z = p.z + 4.5
p.z = p.z - castRayStatic(p, downVec, 1000)
end
@/lua/ge/extensions/editor/mapSensorEditor.lua
local rayPos, rayDir = ray.pos, ray.dir
local pInt = rayPos + rayDir * castRayStatic(rayPos, rayDir, 1000)
util.drawMouseSphere(pInt)
@/lua/ge/extensions/editor/tech/roadArchitect/render.lua
local p1, p2 = tmp0 + vec * q1 + raisedBig, tmp0 + vec * q2 + raisedBig
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + 0.02
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + 0.02
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + 0.02
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + 0.02
dbgDraw.drawLineInstance_MinArg(p1, p2, guidelineThickness, guidelineColor)
local p1, p2 = tmp0 + vec * q1 + raisedBig, tmp0 + vec * q2 + raisedBig
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + 0.02
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + 0.02
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + 0.02
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + 0.02
dbgDraw.drawLineInstance_MinArg(p1, p2, guidelineThickness2, guidelineColor2)
local p1, p2 = sGL[1] + raisedBig, sGL[2] + raisedBig
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + 0.02
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + 0.02
p1.z = p1.z - castRayStatic(p1, downVec, 1000) + 0.02
p2.z = p2.z - castRayStatic(p2, downVec, 1000) + 0.02
for j = 1, #guidelines do
local q1, q2 = tGL[1] + raisedBig, tGL[2] + raisedBig
q1.z = q1.z - castRayStatic(q1, downVec, 1000) + 0.02
q2.z = q2.z - castRayStatic(q2, downVec, 1000) + 0.02
q1.z = q1.z - castRayStatic(q1, downVec, 1000) + 0.02
q2.z = q2.z - castRayStatic(q2, downVec, 1000) + 0.02
local pInt2D = util.intersection2LineSegs(p1, p2, q1, q2)
pInt2D = pInt2D + raisedBig
pInt2D.z = pInt2D.z - castRayStatic(pInt2D, downVec, 1000) + 0.02
dbgDraw.drawSphere(pInt2D, 0.1 * sqrt(pInt2D:distance(camPos)), guidelineColor2)
pts[t + 1] = pInt2D + util.rotateVecAroundAxis(vec5, zAxis, t * 0.05 * theta1 * angleSign) + raisedBig
pts[t + 1].z = pts[t + 1].z - castRayStatic(pts[t + 1], downVec, 1000) + 0.02
end
pts[t + 1] = pInt2D + util.rotateVecAroundAxis(vec5, zAxis, t * 0.05 * theta2 * angleSign) + raisedBig
pts[t + 1].z = pts[t + 1].z - castRayStatic(pts[t + 1], downVec, 1000) + 0.02
end
@/lua/ge/extensions/editor/tech/roadArchitect/utilities.lua
local rayPos, rayDir = ray.pos, ray.dir
return rayPos + rayDir * castRayStatic(rayPos, rayDir, 1000)
end
tmp:set(p.x, p.y, p.z + 4.5)
local zCast = tmp.z - castRayStatic(tmp, downVec, 1000)
return abs(zTerrain - zCast) < 0.25
@/lua/ge/extensions/gameplay/traffic/vehicle.lua
tempDirVec:setScaled(1 / max(1e-12, vecLen))
return castRayStatic(startPos, tempDirVec, vecLen) >= vecLen
end
@/lua/ge/extensions/gameplay/markers/walkingMarker.lua
local visible = rayLength < area.maxVisibleDistance and castRayStatic(iconPos, tmpVec, rayLength, nil) >= rayLength
@/gameplay/missions/automation_test_track/flowgraph/001-Dam/customNodes/hitTargetNode.lua
local dir = self.pos - self.centerPos
local hitDist = castRayStatic(self.centerPos, dir, dist + 0.01)
local hitValid = hitDist <= dist
@/lua/ge/extensions/gameplay/markers/missionMarker.lua
local rayLength = tmpVec:length()
local hitDist = castRayStatic(data.camPos, tmpVec, rayLength, nil)
--simpleDebugText3d(string.format("distanceFromMarker: %0.3f, missionIconAlphaDist: %s, focus: %s, hitDist: %0.4f, rayLength: %0.4f", distanceFromMarker, missionIconAlphaDist, self.cluster.focus, hitDist, rayLength), iconInfo.worldPosition, 1)
@/lua/ge/extensions/core/cameraModes/transition.lua
if dist > 100 then return false end
local visibleOneWay = castRayStatic(origin, dir, dist) >= dist
local visibleOtherWay = castRayStatic(target, -dir, dist) >= dist
local visibleOneWay = castRayStatic(origin, dir, dist) >= dist
local visibleOtherWay = castRayStatic(target, -dir, dist) >= dist
return visibleOneWay and visibleOtherWay
@/lua/ge/extensions/career/modules/playerDriving.lua
local camDirLength = camDir:length()
local rayDist = castRayStatic(getPlayerVehicle(0):getPosition(), camDir, camDirLength)
@/lua/ge/spawn.lua
local rayLength = rayDir:length()
if castRayStatic(intendedPos, rayDir, rayLength) >= rayLength then
visibleToDirection = true
end
if castRayStatic(randPoint, -rayDir, rayLength) >= rayLength then
visibleFromDirection = true
for i = -1, 1, 0.2/startPosOffset:length() do -- this starts a ray every 20cm at each side of the vehicle
if castRayStatic((startPos + startPosOffset * i), (axis0 * x + axis1 * y), halfDist * 2) < halfDist * 2 then
return true
-- One more raycast with i=1
if castRayStatic((startPos + startPosOffset), (axis0 * x + axis1 * y), halfDist * 2) < halfDist * 2 then
return true
local startPos = startPosBase + (axis0 * x * halfExtentsX * rayCastStartPositionFactor + axis1 * y * halfExtentsY * rayCastStartPositionFactor)
local detectedDist = castRayStatic(startPos, downVec, rayDist)
if detectedDist < rayDist then
@/lua/ge/extensions/freeroam/bigMapMode.lua
local rayMaxDist = extents.z * 1.1
local rayDist = castRayStatic(edgePoint1, vec3(0,0,-1), rayMaxDist)
if rayDist < rayMaxDist then
local edgePoint2 = vec3(mapBoundaries.minExtents.x, (mapBoundaries.maxExtents.y + mapBoundaries.minExtents.y) / 2, mapBoundaries.maxExtents.z)
local rayDist = castRayStatic(edgePoint2, vec3(0,0,-1), rayMaxDist)
if rayDist < rayMaxDist then
local edgePoint3 = vec3((mapBoundaries.maxExtents.x + mapBoundaries.minExtents.x) / 2, mapBoundaries.maxExtents.y, mapBoundaries.maxExtents.z)
local rayDist = castRayStatic(edgePoint3, vec3(0,0,-1), rayMaxDist)
if rayDist < rayMaxDist then
local edgePoint4 = vec3(mapBoundaries.maxExtents.x, (mapBoundaries.maxExtents.y + mapBoundaries.minExtents.y) / 2, mapBoundaries.maxExtents.z)
local rayDist = castRayStatic(edgePoint4, vec3(0,0,-1), rayMaxDist)
if rayDist < rayMaxDist then
end
local hitDist = castRayStatic(ray.pos, ray.dir, 50000)
if hitDist < 50000 then
@/lua/vehicle/scriptai.lua
-- Raise the point by vehHeight (it might be below ground) and cast a ray to gauge distance to ground
local dist = obj:castRayStatic(avgWheelNodePos + vehHeight * up, -up, 10 * vehHeight) - vehHeight -- 10 * vehHeight is just a safe bet
local dH = maxWheelRadius - dist
@/lua/ge/extensions/core/cameraModes/crash.lua
local candidate = startPos + vec3(startPos):getRandomPointInCircle(20) + vec3(0,0,1)
local downCastDist = castRayStatic(candidate, vec3(0,0,-1), 50)
if downCastDist < 50 then
if candidateDistance > 10
and castRayStatic(candidate, startPos-candidate, candidateDistance) >= candidateDistance
and castRayStatic(startPos, candidate-startPos, candidateDistance) >= candidateDistance then
and castRayStatic(candidate, startPos-candidate, candidateDistance) >= candidateDistance
and castRayStatic(startPos, candidate-startPos, candidateDistance) >= candidateDistance then
return candidate
@/lua/ge/extensions/editor/rayCastTest.lua
local targetDist = castRayStatic(camPos, camMouseRayDir, maxRayDist)
local targetPos = camPos + camMouseRayDir * targetDist
local rayStart = rayGridCenter + x * mouseRayRight + y * mouseRayUp
local dist = castRayStatic(rayStart, dir, maxRayDist)
if dist < maxRayDist then
@/lua/ge/extensions/editor/toolUtilities/util.lua
local rayPos, rayDir = ray.pos, ray.dir
return rayPos + rayDir * castRayStatic(rayPos, rayDir, maxRayDist)
end
pos.z = pos.z + vertRayRaise
local dDown = castRayStatic(pos, globalDown, maxRayDist)
pos.z = pos.z - min(dDown, maxRayDist) + veryRayPostFloat
@/lua/ge/extensions/core/sounds.lua
globalParams:setParameterValue("g_UnderwaterDepth", camUnderwater == 0 and -1 or camObj:getCameraDepthUnderwater())
local camHeightToGeometry = castRayStatic(camPos, vecDown3F, 200)
globalParams:setParameterValue("g_CamHeightToGround", (camObj and camHeightToGeometry) or 0)