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/vehicle/extensions/dynamicVehicleData.lua
local gravity = obj:getGravity()
gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/vehicle/extensions/escCalibration.lua
local gravity = obj:getGravity()
gravity = math.max(0.1, math.abs(gravity)) * sign2(gravity)
@/lua/common/jbeam/sections/nodeBeam.lua
hydro.outLimit = 1 + math.abs(hydro.factor)
hydro.inputFactor = sign2(hydro.factor)
end
@/lua/vehicle/jbeam/stage2.lua
hydro.outLimit = math.abs(hydro.factor)
hydro.inputFactor = sign2(hydro.factor)
end
@/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/vehicle/hydros.lua
h.inputOutLimit = h.inputOutLimit * h.inputFactor
local inputFactorSign = sign2(h.inputFactor)
@/lua/ge/extensions/core/trafficSignals.lua
dir = vec3(nDir)
dir:setScaled(sign2(pos:xnormOnLine(p1, p1 + nDir:cross(vecUp))))
end
@/lua/ge/extensions/gameplay/traffic.lua
if veh.state == 'active' then
local dotDir = sign2(focus.dirVec:dot(veh.dirVec))
if dotDir == 1 then
@/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/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/vehicle.lua
local gravity = core_environment.getGravity()
gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/ge/extensions/editor/tech/roadArchitect/import.lua
local theta = length / r
local kSign = sign2(k)
local kSignR = kSign * r
@/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/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/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/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/flowgraph/nodes/vehicle/gForce.lua
local gravity = core_environment.getGravity()
gravity = math.max(0.01, math.abs(gravity)) * sign2(gravity)
@/lua/ge/extensions/scenario/busdriver.lua
local gravity = core_environment.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/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/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/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/vehicle/extensions/escMeasurement.lua
local gravity = obj:getGravity()
gravity = max(0.1, abs(gravity)) * sign2(gravity)
@/lua/vehicle/controller/drivingDynamics/supervisors/tractionControl.lua
if abs(vehicleVelocity) < velocityOffsetThreshold then
velocityOffset = (velocityOffsetThreshold - abs(vehicleVelocity)) * sign2(vehicleVelocity)
end