VE Lua Documentation

Press F to search!

sign2

Definition


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

--MARK: generic

-- returns -1, 1
function sign2(x)
  return max(min(x * math.huge, 1), -1)
end

Callers

@/lua/ge/extensions/editor/roadArchitect.lua
    if abs(dy) > 1e-3 then
      local theta = sign2(dy) * max(10.0, abs(dy)) * placeRotAngFac
      if isShiftDown then
    if abs(dy) > 1e-3 then
      local theta = sign2(dy) * max(10.0, abs(dy)) * placeRotAngFac
      if isShiftDown then
    if abs(dy) > 1e-3 then
      local theta = sign2(dy) * max(10.0, abs(dy)) * placeRotAngFac
      if isShiftDown then
@/lua/ge/extensions/editor/tech/roadArchitect/geometry.lua
    local delta0, delta1, delta2 = i2z - i1z, i3z - i2z, i4z - i3z
    local signDelta1, absDelta1 = sign2(delta1), abs(delta1)
    local n1 = (sign2(delta0) + signDelta1) * min(abs(delta0), absDelta1, 0.5 * abs((delta0 + delta1) * 0.5))
    local signDelta1, absDelta1 = sign2(delta1), abs(delta1)
    local n1 = (sign2(delta0) + signDelta1) * min(abs(delta0), absDelta1, 0.5 * abs((delta0 + delta1) * 0.5))
    local n2 = (signDelta1 + sign2(delta2)) * min(absDelta1, abs(delta2), 0.5 * abs((delta1 + delta2) * 0.5))
    local n1 = (sign2(delta0) + signDelta1) * min(abs(delta0), absDelta1, 0.5 * abs((delta0 + delta1) * 0.5))
    local n2 = (signDelta1 + sign2(delta2)) * min(absDelta1, abs(delta2), 0.5 * abs((delta1 + delta2) * 0.5))
    local n1PlusN2 = n1 + n2
  local v1 = pStart_2D - cen
  local theta, signFac = 0.0, -sign2((p2 - p1):cross(vertical):dot(p3 - p1))
  local rotDir = (pStart_2D - pEnd_2D):cross(pMid_2D - pEnd_2D):normalized()
    tgt_2D:normalize()
    local signFac = -sign2(tgt_2D:cross(vertical):dot(pIp - pI))
    local theta = util.angleBetweenVecs(v1_2D, p3_2D - iCen_2D) * signFac
          local angDeg = max(0.0, min(8.0, -0.015 * radius + 8.5))
          local bankingSign = sign2((p2 - p1):cross(vertical):dot(p3 - p1))
          nodes[i].rot = im.FloatPtr(bankingSign * autoBankingFactor * angDeg)
@/lua/ge/extensions/gameplay/traffic/trafficUtils.lua
        local gravity = core_environment.getGravity()
        relSpeed = square(relSpeed * relSpeedCoef) / (2 * math.max(0.1, math.abs(gravity)) * sign2(gravity) * -1)
      end
  options.maxLane = math.max(0, options.maxLane or 10)
  options.roadDir = sign2(options.roadDir or math.random() * 2 - 1) -- negative = away from you, positive = towards you
@/lua/ge/extensions/gameplay/race/race.lua
        vehDir:set(veh:getDirectionVectorXYZ())
        local dir = sign2(vehDir:dot(vehVel)) -- negative if driving in reverse
@/lua/ge/extensions/gameplay/police.lua
      local sideDisp = lerp(sideSeg * (i - 1), sideSeg * i, 0.5) - placeData.width * 0.5
      local dir = sign2(sideDisp)
                  elseif rbWidth - totalLength < 1 then
                    angle = random(30, 50) * sign2(random() - 0.5)
                  else
@/lua/ge/extensions/core/trafficSignals.lua
        dir = vec3(nDir)
        dir:setScaled(sign2(pos:xnormOnLine(p1, p1 + nDir:cross(vecUp))))
      end
@/lua/vehicle/ai.lua
local g = obj:getGravity() -- standard gravity is negative
local gravityDir = vec3(0, 0, sign2(g))
g = max(1e-30, abs(g)) -- prevent divivion by 0 gravity
          twt.dirState[1] = 1
          twt.dirState[2] = sign2(dirTargetAxis)
          twt.minRay = "BL"
          twt.dirState[1] = 1
          twt.dirState[2] = sign2(dirTargetAxis)
          twt.minRay = "BR"
          twt.dirState[1] = -1
          twt.dirState[2] = -sign2(dirTargetAxis)
          twt.minRay = "FL"
          twt.dirState[1] = -1
          twt.dirState[2] = -sign2(dirTargetAxis)
          if twt.dirState[2] == -1 and twt.rayMins[4] < 0.4 and twt.targetSpeed < 0.6 then twt.dirState[2] = 0 end
          twt.dirState[1] = 1
          twt.dirState[2] = sign2(dirTargetAxis)
          twt.minRay = "B"
          twt.dirState[1] = -1
          twt.dirState[2] = -sign2(dirTargetAxis)
          twt.minRay = "F"
      twt.targetSpeed = max(min(twt.speedSmoother:get(targetSpeed, dt), min(6, aggression * 6)), 0.3)
      local speedDif = twt.targetSpeed - twt.dirState[1] * sign2(dirVel) * ego.speed
      local steering = twt.steerSmoother:get(twt.dirState[2], dt)
      local steering = twt.steerSmoother:get(twt.dirState[2], dt)
      local pbrake = 0 -- * clamp(sign2(0.83 + ego.upVec:dot(gravityDir)), 0, 1) -- >= 10 deg
      local throttle, brake = 0, 0
      local sideDisp = plan.dispLat -- (sideDisp > 0) means v-vehicle is on our left side and ego should move right
      sideDisp = min(dt * parameters.awarenessForceCoef * 10, abs(sideDisp)) * sign2(sideDisp) -- limited displacement per frame
      local curDist = 0
    if c1 <= c2 then
      curvature = sign2(n1.turnDir:dot(n1.normal)) * c1
    else
    else
      curvature = sign2((n1.vec):dot(n1.normal) - n3vec:dot(n1.normal)) * c2
    end
            local wp3Pos = mapData:getEdgePositions(wp3, wp2)
            local side = sign2(edgeNormal:dot(wp3Pos) - edgeNormal:dot(minNodePos))
            table.insert(route.laneChanges, {pathIdx = route.lastLaneChangeIdx, side = side, alternate = minNode})
          -- time to lateral collision (> 0 means collision is imminent, < 0 means collision does not happen)
          local TTC = dist * sign2(rsLat) / (abs(rsLat) + 1e-30)
          -- relative longitudinal speed of v w.r.t. ego (rsLong > 0 means ego is moving faster than v)
      local sideDisp = sqrt(dispLeft) - sqrt(dispRight) -- (sideDisp > 0) means v-vehicle is on our left side and ego should move right
      sideDisp = min(dt * parameters.awarenessForceCoef * 10, abs(sideDisp)) * sign2(sideDisp) -- limited displacement per frame
      plan.sideDisp = true
    if c1 <= c2 then
      curvature = sign2(n1.turnDir:dot(n1.normal)) * c1
    else
    else
      curvature = sign2((n1.vec):dot(n1.normal) - n3vec:dot(n1.normal)) * c2
    end
          if abs(tSi.dir:dot(tSi.turnDir)) < 0.707 then
            tSi.turn = -sign2(tSi.dir:cross(gravityDir):dot(tSi.turnDir))
          end
    trafficStates.side.timer = (trafficStates.side.timer + dt) % (2 * trafficStates.side.timerLimit)
    trafficStates.side.side = sign2(trafficStates.side.timerLimit - trafficStates.side.timer)
  else
@/lua/vehicle/extensions/dynamicVehicleData.lua
  local gravity = obj:getGravity()
  gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/ge/extensions/editor/tech/roadArchitect/clothoid.lua
local function evalXYaLarge(a, b)
  local s = sign2(a)
  local absA = abs(a)
@/lua/ge/extensions/scenario/busdriver.lua
    local gravity = core_environment.getGravity()
    gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/ge/extensions/gameplay/traffic/vehicle.lua
  local gravity = core_environment.getGravity()
  gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/ge/map.lua
      local k = trajectory[i].normal:dot(trajectory[i].force)
      local forceDir = sign(k) * max(0, sign2(k * trajectory[i].prevFDir)) -- stop moving before switching direction (improves stability)
      local displacement = forceDir * min(abs(k), s.hta)
      --   -- trajectory[i].pos:setSub((p - trajectory[i].pos):normalized() * max(0, dist - min(dispFromCenter, min(0, halfWidth - s.distFromEdge)))) -- TODO: add distFromEdge limit here
      --   local dirSign = sign2((p - trajectory[i].pos):dot(trajectory[i].normalOrig))
      --   trajectory[i].pos:setSub(dirSign * trajectory[i].normalOrig * max(0, dist - min(dispFromCenter, min(0, halfWidth - s.distFromEdge))))
  local gravity = core_environment.getGravity()
  gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/common/jbeam/sections/nodeBeam.lua
      hydro.outLimit = 1 + math.abs(hydro.factor)
      hydro.inputFactor = sign2(hydro.factor)
    end
@/lua/ge/extensions/core/multiSpawn.lua
      else
        rot:setScaled(sign2(side * legalSide))
      end
    rot = (path.pos2 - path.pos1):normalized()
    pos, rot = getLinePoint(path.pos1 + rot * dist + rot:cross(vecUp) * (2 * sign2(side) - 2), rot)
  end
@/lua/vehicle/extensions/escMeasurement.lua
    local gravity = obj:getGravity()
    gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/vehicle/jbeam/stage2.lua
      hydro.outLimit = math.abs(hydro.factor)
      hydro.inputFactor = sign2(hydro.factor)
    end
@/lua/vehicle/controller/drivingDynamics/supervisors/tractionControl.lua
  if abs(vehicleVelocity) < velocityOffsetThreshold then
    velocityOffset = (velocityOffsetThreshold - abs(vehicleVelocity)) * sign2(vehicleVelocity)
  end
@/lua/ge/extensions/flowgraph/nodes/vehicle/gForce.lua
  local gravity = core_environment.getGravity()
  gravity = math.max(0.01, math.abs(gravity)) * sign2(gravity)
@/lua/ge/extensions/editor/toolUtilities/render.lua
  local angle = acos(tmpA:dot(tmpB)) -- The angle between the two vectors.
  local step = -sign2(twistAngle) * angle * numArcSegmentsInv
  for i = 1, numArcSegments + 1 do
@/lua/vehicle/hydros.lua
    h.inputOutLimit = h.inputOutLimit * h.inputFactor
    local inputFactorSign = sign2(h.inputFactor)
@/lua/ge/extensions/editor/tech/roadArchitect/import.lua
  local theta = length / r
  local kSign = sign2(k)
  local kSignR = kSign * r
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veJBeamBeautifier.lua
                              end
                              if sign2(astNode[2]) == -1 then
                                columnWidth = columnWidth - 1
                      if astNodeType == 'number' then
                        if sign2(astNode[2]) == -1 then
                          spacing = spacing - 1
@/lua/vehicle/extensions/escCalibration.lua
      local gravity = obj:getGravity()
      gravity = math.max(0.1, math.abs(gravity)) * sign2(gravity)
@/lua/ge/extensions/gameplay/traffic.lua
      if veh.state == 'active' then
        local dotDir = sign2(focus.dirVec:dot(veh.dirVec))
        if dotDir == 1 then