VE Lua Documentation

Press F to search!

updateGFX

Definition


-- @/lua/vehicle/hydros.lua:390

local function updateGFX(dt) -- dt in seconds
  local invPhysSteps = physicsDt / dt

  if virtualWheelEnabled then
    electrics.values.steering_input = virtualWheelAngleFun()
  end

  for k, f in pairs(inputFlex) do
    local eval = electrics.values[k]
    if eval then
      local offset = f.offset
      if f.offsetDiff ~= 0 and not(k == "steering_input" and FFBID >= 0 and playerInfo.anyPlayerSeated) then
        offset = offset + signApply(f.offsetDiff, min(abs(f.offsetDiff), f.maxRate * dt))
        offset = min(max(offset + eval, f.inLimit), f.outLimit) - eval
      else
        offset = signApply(offset, max(0, abs(offset) - f.minRate * dt))
      end
      f.offsetDiff = 0
      f.offset = offset
      f.value = eval + offset
    end
  end

  -- update the source command value
  for i = 1, hydroCount do
    local h = M.hydros[i]
    h.prevstate = h.state
    h.cmd = min(max(inputFlex[h.inputSource].value or 0, h.inputInLimit), h.inputOutLimit) * h.inputFactor

    -- flex input
    if h.forceLimit then
      local stress = obj:getBeamStress(h.bcid) * h.inputFactor
      local absStress = abs(stress)
      if absStress > h.forceLimit then
        inputFlex[h.inputSource].offsetDiff = inputFlex[h.inputSource].offsetDiff + signApply(stress, absStress - h.forceLimit) / (v.data.beams[h.bcid].beamSpring * min(h.multOut, h.multIn))
      end
    end

    if h.cmd == h.inputCenter and h.analogue == false and h.autoCenterRate then
      -- set autocenter rate
      h._inrate, h._outrate = h.autoCenterRate * physicsDt, h.autoCenterRate * physicsDt
    else
      h._inrate, h._outrate = h.inRate * physicsDt, h.outRate * physicsDt
    end

    if h.cmd >= h.inputCenter then
      h.cmd = h.cOut + h.cmd * h.multOut
    else
      h.cmd = h.cIn + h.cmd * h.multIn
    end

    h.smoothrate = abs(h.state - h.cmd) * invPhysSteps
  end

  if FFBHydrosExist then
    local FFBhcount = 0
    local hydroPos = 0
    local simWheelPos = 0
    for i, h in ipairs(FFBHydros) do
      h._inrate, h._outrate = h.inRate * physicsDt, h.outRate * physicsDt
      local hbcid = h.bcid
      if not h.fIsBroken(obj, hbcid) then
        FFBhcount = FFBhcount + 1
        hydroPos = hydroPos + toInputSpace(h, h.fgetDisplacement(obj, hbcid) * h.invFFBHydroRefL)
        simWheelPos = simWheelPos + toInputSpace(h, h.state)
      end
    end

    local invDt = 1 / (dt + 1e-30)
    dtInternal = 0
    local y0 = y1
    local invFFBCount = 1 / max(1, FFBhcount)
    y1, hydroPos = simWheelPos * invFFBCount, hydroPos * invFFBCount

    local prevy2R, prevPredy2 = y2R, y2
    y2 = electrics.values.steering_input or 0  -- current pos
    y2R = y2

    local predDelta = y2R - prevy2R
    if (hydroPos - y2R) * predDelta >= 0 then
      local pred = min(max(predDelta / (prevPredy2 - prevy2R), 0), 1) * predDelta * dt / (prevdt + 1e-10)
      y2 = y2R + sign(pred) * max(abs(pred) - overshoot, 0)
    end
    overshoot = 0

    local wheelvel = (y2 - prevPredy2) * invDt
    local delta2 = wheelvel
    local delta0 = (y1-y0) / (prevdt + 1e-30)
    local delta1 = (y2-y1) * invDt
    m1 = (sign(delta0)+sign(delta1)) * min(abs(delta0),abs(delta1), 0.5*abs((dt*delta0 + prevdt*delta1) / (prevdt + dt + 1e-30)))
    local m2 = (sign(delta1)+sign(delta2)) * min(abs(delta1), abs(delta2), 0.25*abs(delta1 + delta2))
    delta1m1 = delta1 - m1
    delta1m1m2 = m1 + m2 - 2*delta1
    prevdt = dt

    GforceVelCoef = min(1, 1/(abs(wheelvel) + 1))
    M.curForceLimit = curForceLimitSmoother:getWithRate(M.wheelFFBForceLimit, obj:getRealdt(), 1) -- ffb spike preventer after spawn/reload/pause/etc. uses dtReal, since this safety smoother is intended to follow wall time

    local speedT = max(electrics.values.airspeed, abs(electrics.values.wheelspeed)) / ffbSpeedFast
    M.wheelFFBForceCoefCurrent = lerp(M.wheelFFBForceCoefLowSpeed, M.wheelFFBForceCoef, clamp(speedT, 0, 1)) -- approach maxForce as we get closer to the fast speed threshold

    if ai.isDriving() then
      M.wheelFFBForceCoefCurrent = 0 -- free up the wheel while AI is driving
      FFBsmooth:set(0)
      curForceLimitSmoother:set(0)
    end
  end

  -- update electrics steering
  if steeringHydro then
    electrics.values.steering = -toInputSpace(steeringHydro, steeringHydro.state) * v.data.input.steeringWheelLock
  end

  if M.enableFFB and M.enableVibration and playerInfo.anyPlayerSeated then
    vibrationUpdate(dt)
  end

  ffbDuringCurFrame = false
end

Callers

@/lua/vehicle/controller/advancedCouplerControl.lua

local function updateGFX(dt)
  if couplerGroup.spawnSoundDelayTimer > 0 then
@/lua/vehicle/controller/tech/MQTToutput.lua

local function updateGFX(dt)
  updateData(dt)
@/lua/vehicle/powertrain/hydraulicPump.lua

local function updateGFX(device, dt)
  for _, consumer in ipairs(device.connectedConsumers) do
  for _, consumer in ipairs(device.connectedConsumers) do
    consumer:updateGFX(device.accumulatorPressure, dt)
  end
@/lua/vehicle/extensions/tech/advancedIMU.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(advancedIMUs) do
@/lua/vehicle/extensions/tech/idealRADARSensor.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(idealRADARs) do
@/lua/vehicle/controller/controlModes.lua

local function updateGFX(dt)
  inputs.steering = input.steering
@/lua/vehicle/controller/powertrainControl/rimPullControl.lua

local function updateGFX(dt)
  --read the rim pull input from the relevant axis action
@/lua/vehicle/controller/gauges/analogOdometer.lua

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/controller/drivingDynamics/supervisors/components/awdControl.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/electrics.lua

local function updateGFX(dt)
  updateIgnitionStarterHandler(dt)

  customValueParser.updateGFX(dt)
@/lua/vehicle/extensions/dynoClient.lua

local function updateGFX(dt)
    if not dynoObjectID then return end
@/lua/vehicle/extensions/tech/CANBus/ProjectBavariaController.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/controller/hydraulics/electricHydraulics.lua

local function updateGFX(dt)
  local motorThrottle = 0
@/lua/vehicle/wheels.lua

local function updateGFX(dt)
  updateThermalsGFXMethod(dt)
@/lua/vehicle/powertrain/combustionEngine.lua

local function updateGFX(device, dt)
  device:updateFuelUsage()

  device.turbocharger.updateGFX(dt)
  device.supercharger.updateGFX(dt)
  device.turbocharger.updateGFX(dt)
  device.supercharger.updateGFX(dt)
  device.nitrousOxideInjection.updateGFX(dt)
  device.supercharger.updateGFX(dt)
  device.nitrousOxideInjection.updateGFX(dt)

  device.thermals.updateGFX(dt)
@/lua/vehicle/controller/braking/compressionBrake.lua

local function updateGFX(dt)
  local compressionBrakeCoefActual = compressionBrakeCoef * (1 - sign(controlledEngine.requestedThrottle))
@/lua/vehicle/props.lua

local function updateGFX()
  local evals = electrics.values
@/lua/vehicle/extensions/tech/CANBus/ProjectBavariaShifter.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/main.lua
  lastDt = dtSim
  sensors.updateGFX(dtSim) -- must be before input and ai
  mapmgr.sendTracking() -- must be before ai
  mapmgr.sendTracking() -- must be before ai
  wheels.updateGFX(dtSim)
  ai.updateGFX(dtSim) -- must be before input and after wheels
  wheels.updateGFX(dtSim)
  ai.updateGFX(dtSim) -- must be before input and after wheels
  input.updateGFX(dtSim) -- must be as early as possible
  ai.updateGFX(dtSim) -- must be before input and after wheels
  input.updateGFX(dtSim) -- must be as early as possible
  electrics.updateGFX(dtSim)
  input.updateGFX(dtSim) -- must be as early as possible
  electrics.updateGFX(dtSim)
  controller.updateGFX(dtSim)
  electrics.updateGFX(dtSim)
  controller.updateGFX(dtSim)
  electrics.updateGFXSecondStep(dtSim)
  extensions.hook("updateGFX", dtSim) -- must be before drivetrain, hydros and after electrics
  hydros.updateGFX(dtSim) -- must be early for FFB, but after (input, electrics) and before props
  powertrain.updateGFX(dtSim)
  hydros.updateGFX(dtSim) -- must be early for FFB, but after (input, electrics) and before props
  powertrain.updateGFX(dtSim)
  energyStorage.updateGFX(dtSim)
  powertrain.updateGFX(dtSim)
  energyStorage.updateGFX(dtSim)
  drivetrain.updateGFX(dtSim)
  energyStorage.updateGFX(dtSim)
  drivetrain.updateGFX(dtSim)
  beamstate.updateGFX(dtSim) -- must be after drivetrain
  drivetrain.updateGFX(dtSim)
  beamstate.updateGFX(dtSim) -- must be after drivetrain
  protocols.updateGFX(dtSim)
  beamstate.updateGFX(dtSim) -- must be after drivetrain
  protocols.updateGFX(dtSim)
  sounds.updateGFX(dtSim)
  protocols.updateGFX(dtSim)
  sounds.updateGFX(dtSim)
  thrusters.updateGFX() -- should be after extensions.hook
  sounds.updateGFX(dtSim)
  thrusters.updateGFX() -- should be after extensions.hook
  if playerInfo.firstPlayerSeated then
    damageTracker.updateGFX(dtSim)
  end

  props.updateGFX() -- must be after hydros
  material.updateGFX()
  props.updateGFX() -- must be after hydros
  material.updateGFX()
  fire.updateGFX(dtSim)
  material.updateGFX()
  fire.updateGFX(dtSim)
  recovery.updateGFX(dtSim)
  fire.updateGFX(dtSim)
  recovery.updateGFX(dtSim)
  powertrain.updateGFXLastStage(dtSim)
@/lua/vehicle/extensions/odometer.lua

local function updateGFX(dt)
  relativeOdometer = relativeOdometer + abs(electrics.values.wheelspeed or 0) * dt
@/lua/vehicle/controller/beaconSpin.lua

local function updateGFX(dt)
  electrics.values[electricsName] = electrics.values.lightbar > 0 and ((electrics.values[electricsName] + (dt * beaconSpeed)) % 360) or 0 --this needs to be 0 as otherwise the spotlights stay turned on :|
@/lua/vehicle/controller.lua

local function updateGFX(dt)
  for i = 1, gfxUpdateCount, 1 do
      if controller.updateGFX ~= nil then
        print("  sortedControllers[" .. i .. "].updateGFX(dt) -- " .. tostring(controller.typeName))
      end
@/lua/vehicle/extensions/tech/CANBus/CANBusPeak.lua

local function updateGFX(dt)
  if M.isConnected and next(canMessageCallbacks) ~= nil then
@/lua/ge/extensions/util/export.lua

local function updateGFX(dt)
  if lastMeshInfo and lastMeshInfo.dataIsReady then
@/lua/ge/map.lua

local function updateGFX(dtReal, dtSim)
  if dtSim > 0 then
@/lua/vehicle/extensions/escCalibration.lua

local function updateGFX(dt)
  if skewStiffnessTestState == idleState then
@/lua/vehicle/extensions/tech/tyreBarrier.lua

local function updateGFX(dtSim)
  if IMUcontroller ~= nil then
@/lua/vehicle/extensions/vehiclePerformanceData.lua

local function updateGFX(dt)
  --iterate active recordings and execute the update method
@/lua/vehicle/controller/braking/brakedDifferentialSteering.lua

local function updateGFX(dt)
  local steering = electrics.values.steering_input or 0
@/lua/vehicle/controller/controllerTemplate.lua

local function updateGFX(dt)
end
@/lua/vehicle/controller/drivingDynamics/actuators/electronicSplitShaftLock.lua

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/energyStorage.lua

local function updateGFX(dt)
  for i = 1, storageCount, 1 do
    if storage.updateGFX then
      storage:updateGFX(dt)
    end
@/lua/vehicle/controller/driveModes.lua

local function updateGFX(dt)
  for _, buttonData in pairs(simpleControlButtons) do
@/lua/vehicle/powertrain/sequentialGearbox.lua

local function updateGFX(device, dt)
  if device.targetGearIndex then
@/lua/vehicle/controller/inputOutputDemo.lua
--If you overload this method performance wise, fps will drop gracefully, so disk IO and other heavily unpredictable things are done/triggered from here (or user input)
local function updateGFX(dt)
  LogInterestingData()
@/lua/vehicle/extensions/tech/powertrainSensor.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(powertrains) do
@/lua/vehicle/controller/drivingDynamics/sensors/virtualSensors.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
  local virtual = M.virtual
@/lua/vehicle/powertrain/nitrousOxideInjection.lua

local function updateGFX(dt)
  if assignedEngine.engineDisabled then
@/lua/vehicle/controller/propAnimation/sequentialLever.lua

local function updateGFX(dt)
  if not relevantGearbox then
@/lua/vehicle/controller/drivingDynamics/supervisors/components/brakeControl.lua

local function updateGFX(dt)
  electrics.values.isYCBrakeActive = isYCBrakeActive and 1 or 0
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/extensions/inputAnalyzer.lua

local function updateGFX(dt)
  inputCheckTimer = inputCheckTimer + dt
@/lua/vehicle/extensions/aeroDebug.lua

local function updateGFX(dt)
  if not isEnabled then
@/lua/vehicle/powertrain/manualGearbox.lua

local function updateGFX(device, dt)
  --local gearIndex = device.grindingShiftTargetIndex or device.gearIndex
@/lua/vehicle/controller/lineLock.lua

local function updateGFX(dt)
  electrics.values[electricsName] = lineLockActive
@/lua/vehicle/powertrain/turbocharger.lua

local function updateGFX(dt)
  --Some verification stuff
@/lua/vehicle/controller/sbrGauges.lua

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/powertrain/combustionEngineThermals.lua

local function updateGFX(dt)
  updateCoolingGFXMethod(dt)
@/lua/vehicle/protocols.lua

local function updateGFX(dtSim)
  if not playerInfo.firstPlayerSeated then return end
@/lua/vehicle/energyStorage/fuelTank.lua

local function updateGFX(storage, dt)
  storage.remainingVolume = storage.storedEnergy / (storage.fuelLiquidDensity * storage.energyDensity)
@/lua/vehicle/controller/propAnimation/dualAxisLever.lua

local function updateGFX(dt)
  updateTargetQueue(dt)
@/lua/vehicle/controller/pneumatics/liftAxleControl.lua

local function updateGFX(dt)
  if currentMode == modes.drop then
@/lua/vehicle/extensions/utRecorder.lua

local function updateGFX(dt)
  local pos = obj:getPosition()
@/lua/vehicle/extensions/telemetryLogger.lua

local function updateGFX(dt)
  if not isRecording then
@/lua/vehicle/extensions/tech/LINBus/LINBusPeak.lua

local function updateGFX(dt)
  if M.isConnected then
@/lua/vehicle/controller/tech/screens.lua

local function updateGFX(dt)
end
@/lua/vehicle/extensions/advancedwheeldebug.lua

local function updateGFX(dt)
  if not isDebugEnabled then
@/lua/vehicle/controller/propAnimation/hPattern.lua

local function updateGFX(dt)
  if not relevantGearbox and not demoMode then
@/lua/vehicle/extensions/cruiseControl.lua

local function updateGFX(dt)
  if not isEnabled then
@/lua/vehicle/extensions/api.lua

local function updateGFX()
    httpJsonServer.update()
@/lua/vehicle/controller/braking/transbrake.lua

local function updateGFX(dt)
  electrics.values[electricsName] = gearbox.lockCoef == 0
@/lua/vehicle/ai.lua
M.updateGFX = nop
local function updateGFX(dtGFX)
  dt = dtGFX
@/lua/vehicle/controller/sound/reverseWarn.lua

local function updateGFX(dt)
  tick = tick + dt
@/lua/vehicle/controller/dragTimer.lua

local function updateGFX(dt)
end
@/lua/vehicle/controller/hydraulics/hydraulicTrailerFeet.lua

local function updateGFX(dt)
  local currentPosition = feetCylinder.currentExtendPercent
@/lua/vehicle/controller/gauges/genericGauges.lua

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/thrusters.lua
local invalidThrusterControlWarned
local function updateGFX()
  table.clear(thrusterState)
@/lua/vehicle/controller/drivingDynamics/sensors/vehicleData.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/energyStorage/n2oTank.lua

local function updateGFX(storage, dt)
  storage.remainingMass = storage.storedEnergy / storage.energyDensity
@/lua/vehicle/extensions/perfectLaunch.lua

local function updateGFX(dt)
  if state == "idle" then

  straightLine.updateGFX(dt)
end
@/lua/vehicle/controller/beamNavigator.lua

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/controller/esc.lua

local function updateGFX(dt)
  warningLightsTimer = warningLightsTimer + dt
@/lua/vehicle/fire.lua

local function updateGFX(dt)
  local rand = random(1) --use the same random value for all effects in this frame
@/lua/vehicle/controller/etkGauges.lua

local function updateGFX(dt)
  if not uiIsReady then
@/lua/vehicle/powertrain/automaticGearbox.lua

local function updateGFX(device, dt)
  --interpolate gear ratio to simulate the opening/closing clutches of the auto gearbox
@/lua/vehicle/extensions/tech/dumpPlayerInput.lua
-- this is called every frame
local function updateGFX(dt)
  if not f then return end
@/lua/vehicle/controller/gauges/customModules/electricMotorData.lua

local function updateGFX(dt)
end
@/lua/vehicle/powertrain/compressor.lua

local function updateGFX(device, dt)
  if streams.willSend("pneumaticsData") then
@/lua/vehicle/controller/braking/hydraulicPumpBrake.lua

local function updateGFX(dt)
  --the engine technically runs the hydraulic pump for the brakes, so no spinning engine means no brake pressure
@/lua/vehicle/controller/axleLift.lua

local function updateGFX(dt)
  local frontPos = frontRaisedPosition
@/lua/vehicle/controller/braking/adaptiveBrakeLights.lua

local function updateGFX(dt)
  local brakeValue = electrics.values.brake or 0
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffLock.lua

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/powertrainControl/antiLag.lua

local function updateGFX(dt)
  local throttle = electrics.values.throttle
@/lua/vehicle/controller/lightbar.lua
-- @param dt: Delta time since last frame in seconds
local function updateGFX(dt)
  -- Skip if lightbar system isn't active
@/lua/vehicle/controller/vehicleController/vehicleController.lua

  --drivingStrategy.core.updateGFX(dt)
@/lua/vehicle/controller/gauges/customModules/environmentData.lua

local function updateGFX(dt)
end
@/lua/vehicle/energyStorage/pressureTank.lua

local function updateGFX(storage, dt)
  -- calculate pressure from stored energy and capacity: PV = nRT, e = nRT, therefore PV = e and P = e / V
@/lua/vehicle/powertrain/electricMotor.lua

local function updateGFX(device, dt)
  device:updateEnergyUsage()
@/lua/vehicle/controller/drivingDynamics/supervisors/components/diffControl.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/powertrain/electricServo.lua

local function updateGFX(device, dt)
  --note: this method is only executed if any electrics name for the target angle is set
@/lua/vehicle/controller/propAnimation/googlyEyes.lua

local function updateGFX(dt)
  local sizeCoef = linearScale(sensors.gz, 0, defaultGravity * gravityMaxSizeCoef, maxSizeCoef, minSizeCoef)
@/lua/vehicle/controller/wendoverGauges.lua

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/controller/gauges/customModules/accelerationData.lua

local function updateGFX(dt)
end
@/lua/vehicle/extensions/core/quickAccess.lua

local function updateGFX(dt)
  if actionCallbackCountdown then
@/lua/vehicle/controller/pyrotechnicCharge.lua

local function updateGFX(dt)
  if not hasTriggered then
@/lua/vehicle/controller/drivingDynamics/supervisors/tractionControl.lua

local function updateGFX(dt)
  isActiveSmoothed = isActiveSmoother:getUncapped(tractionControlActive and 1 or 0, dt)
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/material.lua

local function updateGFX()
  -- check for changes
@/lua/vehicle/controller/linearActuators/linearActuatorTrailerFeet.lua

local function updateGFX(dt)
  local currentPosition = actuator.currentExtendPercent
@/lua/vehicle/controller/sound/airbrakes.lua

local function updateGFX(dt)
  local brake = electrics.values[electricsBrakeName] or 0
@/lua/vehicle/controller/gauges/customModules/dynamicRedlineData.lua

local function updateGFX(dt)
end
@/lua/vehicle/controller/braking/postCrashBrake.lua

local function updateGFX(dt)
  if state == "idle" then
@/lua/vehicle/extensions/tech/CANBus/RacingDisplay.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/powertrain.lua

local function updateGFX(dt)
  M.currentGravity = obj:getGravity()
    if device.updateGFX then
      device:updateGFX(dt)
    end
@/lua/vehicle/electricsCustomValueParser.lua

local function updateGFX(dt)
  --copy our main electrics into the sandboxed environment
@/lua/vehicle/powertrain/supercharger.lua

local function updateGFX(dt)
  -- Some verification stuff
@/lua/vehicle/powertrain/genericTorqueProvider.lua

local function updateGFX(device, dt)
  device.outputRPM = device.outputAV1 * avToRPM
@/lua/vehicle/powertrain/frictionClutch.lua

local function updateGFX(device, dt)
  local kClutchToBellHousing = 30
@/lua/vehicle/extensions/tech/wheelForces.lua

local function updateGFX()
end
@/lua/vehicle/controller/powertrainControl/activeCenterDiff.lua

local function updateGFX(dt)
end
@/lua/vehicle/controller/pneumatics/actuators.lua

local function updateGFX(dt)
  for _, g in pairs(crossFlowGroups) do
@/lua/vehicle/controller/dummy.lua

local function updateGFX(dt)
  electrics.values.throttle = math.min(math.max(input.throttle or 0, 0), 1)
@/lua/vehicle/energyStorage/electricBattery.lua

local function updateGFX(storage, dt)
  storage:setStoredEnergy(storage.storedEnergy)
@/lua/vehicle/controller/vivaceGauges.lua

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/extensions/scenario/shiftBooster.lua

local function updateGFX(dt)
  if boostTime > 0.01 then
@/lua/vehicle/controller/drivingDynamics/actuators/activeCenterDiffLock.lua

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/extensions/gameplayInterface.lua

local function updateGFX(dt)
  checkValueChangeNotificationMethod(dt)
@/lua/vehicle/extensions/dynamicVehicleData.lua

local function updateGFX(dt)
  timer = timer + dt
@/lua/vehicle/powertrain/hydraulicCylinder.lua

local function updateGFX(cylinder, dt)
  local valvePosition = electrics.values[cylinder.directionElectricsName] or 0
@/lua/vehicle/controller/sound/AVAS.lua

local function updateGFX(dt)
  local gear = electrics.values.gear
@/lua/vehicle/controller/hydraulicSuspension.lua

local function updateGFX(dt)
  if currentPumpFlow > 0 then
@/lua/vehicle/controller/gauges/customModules/navigationData.lua

local function updateGFX(dt)
end
@/lua/vehicle/controller/gauges/customModules/tireData.lua

local function updateGFX(dt)
end
@/lua/vehicle/extensions/straightLine.lua

local function updateGFX(dt)
  if baseTargetPos then
@/lua/vehicle/extensions/tech/CANBus/ButtonBox.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/controller/playerController.lua

local function updateGFX(dt)
  ballGroundContactNodesPast, ballGroundContactNodesNew = ballGroundContactNodesNew, ballGroundContactNodesPast
@/lua/vehicle/extensions/dragAi.lua

local function updateGFX(dt)
  if state == "ready" then
@/lua/vehicle/extensions/tech/platooning.lua

local function updateGFX(dtSim)
@/lua/vehicle/powertrain/centrifugalClutch.lua

local function updateGFX(device, dt)
  local kClutchToHousing = 20
@/lua/vehicle/extensions/mqttGrafanaDemo.lua

local function updateGFX(dt)
  if not client then return end
@/lua/vehicle/controller/drivingDynamics/actuators/electronicDiffLock.lua

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/sounds.lua

local function updateGFX(dt)
  --crash sounds
@/lua/vehicle/extensions/tech/roadsSensor.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(roadsSensors) do
@/lua/vehicle/extensions/tech/mesh.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(meshes) do
@/lua/vehicle/extensions/tech/ACC.lua

local function updateGFX(dtSim)
@/lua/vehicle/controller/couplings/fifthwheel.lua

local function updateGFX(dt)
  --print(state)
@/lua/ge/extensions/core/input/bindings.lua
local wasWalking
local function updateGFX(dtRaw)
  if filechangeTimeout then
@/lua/vehicle/controller/twoStepLaunch.lua

local function updateGFX(dt)
  if twoStepState == "idle" then
@/lua/vehicle/extensions/vehicleStatsLogger.lua

local function updateGFX(dt)
  if not doLogging then
@/lua/vehicle/powertrain/hydraulicAccumulator.lua

local function updateGFX(device, dt)
  for _, consumer in ipairs(device.connectedConsumers) do
  for _, consumer in ipairs(device.connectedConsumers) do
    consumer:updateGFX(device.accumulatorPressure, dt)
  end
@/lua/vehicle/controller/4wd.lua

local function updateGFX(dt)
  electrics.values.modeRangeBox = rangeBox and (rangeBox.mode == "low" and 1 or 0) or 0
@/lua/vehicle/extensions/debug/advancedExternalDebug.lua

local function updateGFX(dt)
  mainDebugPacket.isActiveVehicle = playerInfo.firstPlayerSeated
@/lua/vehicle/controller/pneumatics/airbrakes.lua

local function updateGFX(dt)
  updateSounds(dt)
@/lua/vehicle/controller/drivingDynamics/supervisors/slipProviders/virtualSpeedSlip.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/airplaneSurfaces.lua

local function updateGFX(dt)
  local rudder = input.rudder or 0
@/lua/vehicle/controller/drivingDynamics/supervisors/components/aeroControl.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/drivingDynamics/CMU.lua

local function updateGFX(dt)
  checkForRollOverAndCrash(dt)
local function updateGFXDebugNotEnabled(dt)
  updateGFX(dt)
local function updateGFXDebugEnabled(dt)
  updateGFX(dt)
@/lua/vehicle/controller/pneumatics.lua

local function updateGFX(dt)
  for _, g in pairs(beamGroups) do
@/lua/vehicle/extensions/gameplayStatistic.lua

local function updateGFX(dt)
  if lenstatSchedule > 0 then
@/lua/vehicle/controller/nitrousOxideInjection.lua

local function updateGFX(dt)
  local tankRatio = engine.nitrousOxideInjection.getTankRatio()
@/lua/vehicle/controller/sound/linearMovement.lua

local function updateGFX(dt)
  --get the current length of our sensor beam
@/lua/vehicle/controller/jato.lua

local function updateGFX(dt)
  local jatoInput = min(electrics.values.jatoInput or 0, 1)
@/lua/vehicle/controller/pneumatics/lowAirPressureWarning.lua

local function updateGFX(dt)
  local pressure = relevantPressureTank and relevantPressureTank.currentPressure or 0
@/lua/vehicle/beamstate.lua

local function updateGFX(dt)
  -- Planet timers
@/lua/vehicle/extensions/gameplayInterfaceModules/interactCargoContainers.lua
local anyContainerNeedsUpdate = false
local function updateGFX(dtSim)
  anyContainerNeedsUpdate = false
@/gameplay/missionTypes/hypermiling/fluidConsumptionToGraph.lua

local function updateGFX(dtSim)
  updateTimer = updateTimer + dtSim
@/lua/vehicle/sensors.lua

local function updateGFX(dt)
  local ffisensors = M.ffiSensors
@/lua/vehicle/extensions/tech/GPS.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(GPSs) do
@/lua/vehicle/controller/drivingDynamics/supervisors/components/motorTorqueControl.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/drivingDynamics/supervisors/yawControl.lua

local function updateGFX(dt)
  isActiveSmoothed = isActiveSmoother:getUncapped(yawControlActive and 1 or 0, dt)
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffBias.lua

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/extensions/tech/OBDEmulator.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/input.lua
local lockTypeWarned
local function updateGFX(dt)
  gxSmoothMax = gx_Smoother:getUncapped(0, dt)
@/lua/ge/main.lua
  if geluaProfiler then geluaProfiler:start() end
  map.updateGFX(dtReal, dtSim)
  if geluaProfiler then geluaProfiler:add("luaPreRender map update") end

  extensions.core_input_bindings.updateGFX(dtRaw)
  simTimeAuthority.update(dtReal)
@/lua/vehicle/controller/tirePressureControl.lua

local function updateGFX(dt)
  pEnv = obj:getEnvPressure()
@/lua/vehicle/controller/shiftLights.lua

local function updateGFX(dt)
  local rpm = electrics.values[inputElectricsName]
@/lua/vehicle/extensions/core/booster.lua

local function updateGFX(dtSim)
  local planets = {}
@/lua/vehicle/extensions/escMeasurement.lua

local function updateGFX(dt)
  if workerCoroutine ~= nil then
@/lua/vehicle/extensions/tech/CANBus/ProjectBavariaKombi.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/controller/loggerTemplate.lua
-- If you overload this method performance wise, fps will drop gracefully, so disk IO and other heavily unpredictable things are done/triggered from here (or user input)
local function updateGFX(dt)
  logInterestingData()
@/lua/vehicle/extensions/simpleTripApp.lua

local function updateGFX(dtSim)
  local dtReal = obj:getRealdt()
@/lua/vehicle/controller/drivingDynamics/supervisors/yawProviders/STMEstimate.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/propAnimation/singleAxisLever.lua

local function updateGFX(dt)
  local gearModeIndex = electrics.values.gearModeIndex or 0
@/lua/vehicle/controller/gauges/customModules/combustionEngineData.lua

local function updateGFX(dt)
end
@/lua/vehicle/controller/drivingDynamics/sensors/sensorHub.lua

local function updateGFX(dt)
  --print(M.accNoiseX + M.accNoiseY + M.accNoiseZ)
local function updateGFXDebug(dt)
  updateGFX(dt)