GE Lua Documentation

Press F to search!

castRayStatic

Definition


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

Callers

@/lua/ge/extensions/gameplay/markers/parkingMarker.lua
    local rayLength =  tmpVec:length()
    local iconVisible = castRayStatic(self.iconPos, tmpVec, rayLength, nil) >= rayLength
@/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/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/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/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
@/gameplay/missionTypes/scatterPickup/customNodes/scatterAnimatorNode.lua
      if rayLength < maxDist then
        local hitDist = castRayStatic(camPos, tmpVec, rayLength, nil)
        if hitDist < rayLength then
@/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/scenario/raceMarkers/crawlMarker.lua
        local rayLength = rayDirection:length()
        if castRayStatic(arrowPos, rayDirection, rayLength, nil) >= rayLength then
          targetHeight = testHeight
@/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/gameplay/traffic/vehicle.lua
  tempDirVec:setScaled(1 / max(1e-12, vecLen))
  return castRayStatic(startPos, tempDirVec, vecLen) >= vecLen
end
@/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/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/gameplay/util/groundContact.lua

  local distToGround = castRayStatic(oobbCenter, vecDown, raycastLength)
  return distToGround <= maxGroundDistance
@/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/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/career/modules/inspectVehicle.lua
    tempVecDir:setSub2(vehObj:getPosition(), playerVehObj:getPosition())
    local vehDist = castRayStatic(playerVehObj:getPosition(), tempVecDir, arriveToVehInspectionDist)
    if vehDist >= distanceToVeh then
@/lua/ge/extensions/career/modules/playerDriving.lua
  local camDirLength = camDir:length()
  local rayDist = castRayStatic(getPlayerVehicle(0):getPosition(), camDir, camDirLength)
@/lua/ge/extensions/gameplay/markers/walkingMarker.lua

      local visible = rayLength < area.maxVisibleDistance and castRayStatic(iconPos, tmpVec, rayLength, nil) >= rayLength
@/lua/ge/extensions/gameplay/markers/inspectVehicleMarker.lua
    local rayLength =  tmpVec:length()
    local iconVisible = castRayStatic(self.iconPos, tmpVec, rayLength, nil) >= rayLength
@/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'
@/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/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/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)
@/lua/ge/extensions/editor/roadArchitect.lua
    p.z = p.z + 4.5
    p.z = p.z - castRayStatic(p, downVec, 1000)
  end
@/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/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/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/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/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/gameplay/markers/crawlMarker.lua

      local visible = rayLength < area.maxVisibleDistance and castRayStatic(iconPos, tmpVec, rayLength, nil) >= rayLength
@/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/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/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/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/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/ge/extensions/gameplay/traffic/trafficUtils.lua
  tempPos:setScaled(1 / math.max(1e-12, rayDistMax))
  local rayDist = castRayStatic(origPos, tempPos, rayDistMax)
@/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)
@/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/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/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/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