VE Lua Documentation

Press F to search!

updateGFX

Definition


-- @/lua/vehicle/input.lua:574
local function updateGFX(dt)
  gxSmoothMax = gx_Smoother:getUncapped(0, dt)
  local absgx = abs(sensors.gx)
  if absgx > gxSmoothMax then
    gx_Smoother:set(absgx)
    gxSmoothMax = absgx
  end

  -- map the values
  for k, e in pairs(M.state) do
    local ival = e.val or 0
    local filter = e.filter
    local angle = e.angle or 0
    if angle > 0 and k == "steering" then
      filter = FILTER_DIRECT
    end -- enforce direct filter if user has chosen an angle for steering binding

    if filter == FILTER_DIRECT then
      if k == "steering" then
        -- use angle-matching for steering inputs
        local lockType = (angle <= 0) and 0 or e.lockType -- quick reference, copypasted from en-US.json: 0 Disabled, 1 Normal, 2 Faster if needed, 3 Disabled if needed
        local vehicleAngle = vehicleSteeringWheelLock * 2 -- convert from jbeam scale (half range) to input scale (full range)
        local relation = angle / vehicleAngle
        -- 1:1 matching angle behaviour (in-game versus real life steering wheel angle):
        if (lockType == 0) or (lockType == 3 and relation < 1) then
          -- don't match
        elseif (lockType == 1) or (lockType == 3 and relation >= 1) then
          -- simple (may not reach full lock in some vehicles)
          ival = clamp(ival * relation, -1, 1)
        elseif lockType == 2 then
          -- progressive (move faster after half-lock to guarantee full lock)
          ival = ival * relation + sign(ival) * square(2 * max(0.5, abs(ival)) - 1) * max(0, 1 - relation) -- ival = linear + nonlinear
        elseif not lockTypeWarned then
          ival = 0
          lockTypeWarned = true
          log("E", "", "Unsupported steering lock type: " .. dumps(lockType))
        end
        ival = inputStabilization(ival, dt, filter)
      end
    else
      ival = min(max(ival, -1), 1)
      if filter == FILTER_PAD then -- joystick / game controller - smoothing without autocentering
        if k == "steering" then
          local prevVal = e.smootherPAD:value()
          local rate = dynamicInputRatePad(ival, dt, prevVal)
          local filteredVal = e.smootherPAD:getWithRateCapped(ival, dt, rate)
          ival = inputStabilization(filteredVal, dt, filter)
        else
          ival = e.smootherPAD:getCapped(ival, dt)
        end
      elseif filter == FILTER_KBD then
        if k == "steering" then
          local prevVal = e.smootherKBD:value()
          local rate = dynamicInputRateKbd(ival, dt, prevVal)
          local filteredVal = e.smootherKBD:getWithRateCapped(ival, dt, rate)
          ival = inputStabilization(filteredVal, dt, filter)
        else
          ival = e.smootherKBD:getCapped(ival, dt)
        end
      elseif filter == FILTER_KBD2 then
        if k == "steering" then
          local prevVal = e.smootherKBD:value()
          local rate = dynamicInputRateKbd2(ival, prevVal)
          local filteredVal = e.smootherKBD:getWithRateCapped(ival, dt, rate)
          ival = inputStabilization(filteredVal, dt, filter)
        else
          ival = e.smootherKBD:getCapped(ival, dt)
        end
      elseif filter == "FILTER_AI" then
        if k == "steering" then
          ival = e.smootherPAD:getWithRateCapped(ival, dt, 4 * rateMult)
          electrics.values.steeringUnassisted = ival
        else
          ival = e.val or 0
        end
      end
    end

    if k == "steering" then
      if playerInfo.anyPlayerSeated and not ai.isDriving() then
        if filter ~= M.lastFilterType then
          obj:queueGameEngineLua(string.format('extensions.telemetry_core.startActivity("controlsUsed", {method = "%s"})', FILTER_NAME[filter]))
          M.lastFilterType = filter
        end
      end
    end

    ival = clamp(ival, e.minLimit, e.maxLimit)

    if k == "parkingbrake" then
      local prev = M[k] or e.minLimit
      if handbrakeSoundEngaging and prev == e.minLimit and ival > prev then
        sounds.playSoundSkipAI(handbrakeSoundEngaging)
      end
      if handbrakeSoundDisengaging and prev == e.maxLimit and ival < prev then
        sounds.playSoundSkipAI(handbrakeSoundDisengaging)
      end
      if handbrakeSoundDisengaged and ival == e.minLimit and ival < prev then
        sounds.playSoundSkipAI(handbrakeSoundDisengaged)
      end
    end

    M[k] = ival

    inputNameCache[k] = inputNameCache[k] or k .. "_input"
    electrics.values[inputNameCache[k]] = ival
    if e.osClockHP then
      inputTSCache[k] = inputTSCache[k] or k .. "_timestamp"
      electrics.values[inputTSCache[k]] = e.osClockHP
    end
  end
end

Callers

@/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/controller/gauges/analogOdometer.lua

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

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

local function updateGFX(dt)
  --print(state)
@/lua/vehicle/controller/pneumatics/airbrakes.lua

local function updateGFX(dt)
  updateSounds(dt)
@/lua/vehicle/controller/vivaceGauges.lua

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

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

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

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

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

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

local function updateGFX(dt)
  --iterate active recordings and execute the update method
@/lua/ge/extensions/core/input/bindings.lua
local wasWalking
local function updateGFX(dtRaw)
  if filechangeTimeout then
@/lua/vehicle/powertrain/sequentialGearbox.lua

local function updateGFX(device, dt)
  if device.targetGearIndex then
@/lua/vehicle/extensions/mqttGrafanaDemo.lua

local function updateGFX(dt)
  if not client then return end
@/lua/vehicle/extensions/tech/mesh.lua

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

local function updateGFX(dtSim)
  local planets = {}
@/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/electrics.lua

local function updateGFX(dt)
  updateIgnitionStarterHandler(dt)

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

local function updateGFX()
    httpJsonServer.update()
@/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/powertrainControl/rimPullControl.lua

local function updateGFX(dt)
  --read the rim pull input from the relevant axis action
@/lua/vehicle/controller/drivingDynamics/supervisors/components/awdControl.lua

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

local function updateGFX(dt)
end
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/thrusters.lua
local invalidThrusterControlWarned
local function updateGFX()
  table.clear(thrusterState)
@/lua/vehicle/controller/hydraulics/electricHydraulics.lua

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

local function updateGFX(storage, dt)
  storage:setStoredEnergy(storage.storedEnergy)
@/lua/vehicle/extensions/tech/platooning.lua

local function updateGFX(dtSim)
@/lua/vehicle/props.lua

local function updateGFX()
  local evals = electrics.values
@/lua/vehicle/extensions/gameplayInterfaceModules/interactCargoContainers.lua
local anyContainerNeedsUpdate = false
local function updateGFX(dtSim)
  anyContainerNeedsUpdate = false
@/lua/vehicle/sensors.lua

local function updateGFX(dt)
  local ffisensors = M.ffiSensors
@/lua/vehicle/controller/drivingDynamics/actuators/activeDiffLock.lua

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

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

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

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

local function updateGFX(dt)
  local frontPos = frontRaisedPosition
@/lua/vehicle/extensions/dragAi.lua

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

local function updateGFX(dt)
  if not isEnabled then
@/lua/vehicle/controller/gauges/customModules/accelerationData.lua

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

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

local function updateGFX(dt)
  warningLightsTimer = warningLightsTimer + dt
@/lua/vehicle/extensions/tech/GPS.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(GPSs) 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/controller/driveModes.lua

local function updateGFX(dt)
  for _, buttonData in pairs(simpleControlButtons) do
@/lua/vehicle/extensions/tech/CANBus/ProjectBavariaShifter.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/extensions/tech/ACC.lua

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

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

local function updateGFX(dt)
  electrics.values[electricsName] = gearbox.lockCoef == 0
@/lua/vehicle/controller/lineLock.lua

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

local function updateGFX(dt)
  if workerCoroutine ~= nil then
@/lua/vehicle/controller/hydraulics/hydraulicTrailerFeet.lua

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

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

local function updateGFX(dt)
  -- Some verification stuff
@/lua/vehicle/controller/gauges/genericGauges.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/dummy.lua

local function updateGFX(dt)
  electrics.values.throttle = math.min(math.max(input.throttle or 0, 0), 1)
@/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/linearActuators/linearActuatorTrailerFeet.lua

local function updateGFX(dt)
  local currentPosition = actuator.currentExtendPercent
@/lua/vehicle/controller/drivingDynamics/sensors/vehicleData.lua

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

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

local function updateGFX(dt)
  -- Planet timers
@/lua/vehicle/material.lua

local function updateGFX()
  -- check for changes
@/lua/vehicle/extensions/inputAnalyzer.lua

local function updateGFX(dt)
  inputCheckTimer = inputCheckTimer + dt
@/lua/vehicle/extensions/tech/CANBus/ButtonBox.lua

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

local function updateGFX(dt)
  local pressure = relevantPressureTank and relevantPressureTank.currentPressure or 0
@/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/drivingDynamics/actuators/electronicDiffLock.lua

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

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

local function updateGFX(dt)
  if not doLogging then
@/lua/vehicle/controller/shiftLights.lua

local function updateGFX(dt)
  local rpm = electrics.values[inputElectricsName]
@/lua/vehicle/controller/playerController.lua

local function updateGFX(dt)
  ballGroundContactNodesPast, ballGroundContactNodesNew = ballGroundContactNodesNew, ballGroundContactNodesPast
@/lua/vehicle/controller/controlModes.lua

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

local function updateGFX(dt)
  local brake = electrics.values[electricsBrakeName] or 0
@/lua/vehicle/extensions/tech/CANBus/CANBusPeak.lua

local function updateGFX(dt)
  if M.isConnected and next(canMessageCallbacks) ~= nil then
@/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/drivingDynamics/supervisors/components/diffControl.lua

local function updateGFX(dt)
end
local function updateGFXDebug(dt)
  updateGFX(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/extensions/tech/tyreBarrier.lua

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

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

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

local function updateGFX(dt)
  --crash sounds
@/lua/vehicle/controller/tech/MQTToutput.lua

local function updateGFX(dt)
  updateData(dt)
@/lua/vehicle/extensions/escCalibration.lua

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

local function updateGFX(dt)
    if not dynoObjectID then return end
@/lua/vehicle/controller/airplaneSurfaces.lua

local function updateGFX(dt)
  local rudder = input.rudder or 0
@/lua/vehicle/powertrain/electricMotor.lua

local function updateGFX(device, dt)
  device:updateEnergyUsage()
@/lua/ge/extensions/util/export.lua

local function updateGFX(dt)
  if lastMeshInfo and lastMeshInfo.dataIsReady then
@/lua/vehicle/extensions/debug/advancedExternalDebug.lua

local function updateGFX(dt)
  mainDebugPacket.isActiveVehicle = playerInfo.firstPlayerSeated
@/lua/vehicle/extensions/simpleTripApp.lua

local function updateGFX(dtSim)
  local dtReal = obj:getRealdt()
@/lua/vehicle/controller/gauges/customModules/electricMotorData.lua

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

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

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

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

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

  --drivingStrategy.core.updateGFX(dt)
@/lua/vehicle/controller/braking/adaptiveBrakeLights.lua

local function updateGFX(dt)
  local brakeValue = electrics.values.brake or 0
@/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/controller/controllerTemplate.lua

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

local function updateGFX(dt)
  local tankRatio = engine.nitrousOxideInjection.getTankRatio()
@/lua/vehicle/energyStorage/fuelTank.lua

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

local function updateGFX(dt)
  if state == "idle" then
@/gameplay/missionTypes/hypermiling/fluidConsumptionToGraph.lua

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

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

local function updateGFX(dt)
  for _, g in pairs(beamGroups) do
@/lua/vehicle/controller/gauges/customModules/combustionEngineData.lua

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

local function updateGFX(dt)
  local throttle = electrics.values.throttle
@/lua/vehicle/extensions/gameplayStatistic.lua

local function updateGFX(dt)
  if lenstatSchedule > 0 then
@/lua/vehicle/controller/drivingDynamics/supervisors/components/motorTorqueControl.lua

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

local function updateGFX(dt)
  if not isRecording then
@/lua/vehicle/controller/drivingDynamics/supervisors/slipProviders/virtualSpeedSlip.lua

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

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

local function updateGFX(dt)
  checkValueChangeNotificationMethod(dt)
@/lua/vehicle/controller/jato.lua

local function updateGFX(dt)
  local jatoInput = min(electrics.values.jatoInput or 0, 1)
@/lua/vehicle/extensions/tech/OBDEmulator.lua

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

local function updateGFX(dt)
  updateCoolingGFXMethod(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/controller/sound/reverseWarn.lua

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

local function updateGFX(dt)
  local steering = electrics.values.steering_input or 0
@/lua/vehicle/extensions/tech/advancedIMU.lua

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

local function updateGFX(dt)
  updateTimer = updateTimer + dt
@/lua/vehicle/extensions/tech/roadsSensor.lua

local function updateGFX(dtSim)
  for sensorId, _ in pairs(roadsSensors) do
@/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/tech/CANBus/RacingDisplay.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/core/quickAccess.lua

local function updateGFX(dt)
  if actionCallbackCountdown then
@/lua/vehicle/extensions/straightLine.lua

local function updateGFX(dt)
  if baseTargetPos then
@/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/hydraulicSuspension.lua

local function updateGFX(dt)
  if currentPumpFlow > 0 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/drivingDynamics/actuators/activeDiffBias.lua

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/gauges/customModules/navigationData.lua

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

local function updateGFX(dt)
  if twoStepState == "idle" then
@/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/tech/CANBus/ProjectBavariaKombi.lua

local function updateGFX(dt)
  if playerInfo.firstPlayerSeated then
@/lua/vehicle/extensions/tech/dumpPlayerInput.lua
-- this is called every frame
local function updateGFX(dt)
  if not f then return end
@/lua/vehicle/controller/propAnimation/googlyEyes.lua

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

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

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

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

local function updateGFX(dtSim)
  if not playerInfo.firstPlayerSeated then return end
@/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/advancedCouplerControl.lua

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

local function updateGFX(dt)
  updateThermalsGFXMethod(dt)
@/lua/vehicle/controller/braking/compressionBrake.lua

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

local function updateGFX(dt)
  if not controlParameters.isEnabled then
local function updateGFXDebug(dt)
  updateGFX(dt)
@/lua/vehicle/controller/gauges/customModules/dynamicRedlineData.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)
@/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/powertrain.lua

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

local function updateGFX(dt)
  if M.isConnected then
@/lua/vehicle/ai.lua
M.updateGFX = nop
local function updateGFX(dtGFX)
  dt = dtGFX
@/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/powertrain/manualGearbox.lua

local function updateGFX(device, dt)
  --local gearIndex = device.grindingShiftTargetIndex or device.gearIndex
@/lua/vehicle/controller/drivingDynamics/supervisors/components/aeroControl.lua

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

local function updateGFX(dt)
  if assignedEngine.engineDisabled then
@/lua/vehicle/energyStorage/n2oTank.lua

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

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

local function updateGFX(dt)
  if not hasTriggered then
@/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/sound/linearMovement.lua

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

local function updateGFX(dtSim)
  for sensorId, _ in pairs(idealRADARs) do
@/lua/ge/map.lua

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

local function updateGFX(dt)
  --copy our main electrics into the sandboxed environment
@/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/extensions/dynamicVehicleData.lua

local function updateGFX(dt)
  timer = timer + dt
@/lua/vehicle/extensions/odometer.lua

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

local function updateGFX(dt) -- dt in seconds
  local invPhysSteps = physicsDt / dt
@/lua/vehicle/controller/sound/AVAS.lua

local function updateGFX(dt)
  local gear = electrics.values.gear
@/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/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/controller/propAnimation/hPattern.lua

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

local function updateGFX(dt)
  updateTimer = updateTimer + dt