GE Lua Documentation

Press F to search!

setTrafficVars

Definition


-- @/lua/ge/extensions/gameplay/traffic.lua:410

local function setTrafficVars(data, reset) -- sets various traffic variables
  if reset then resetTrafficVars() end
  if type(data) ~= 'table' then return end

  for k, v in pairs(data) do
    if k == 'aiMode' or k == 'aiDebug' or k == 'aiAware' then
      data[k] = type(v) == 'string' and string.lower(v) or v
    end
  end

  vars = tableMerge(vars, data)

  for _, id in ipairs(trafficAiVehsList) do
    local veh = traffic[id]

    if data.aiMode then
      veh:setAiMode(data.aiMode)
    end
    if data.aiAware or data.speedLimit or data.baseAggression then
      veh:setAiParameters(data)
    end
    if data.spawnValue then
      veh.respawn.spawnValue = data.spawnValue
      auxiliaryData.dynamicSpawnDist = 0 -- resets distance scattering
    end
    if data.spawnDirBias then
      veh.respawn.spawnDirBias = data.spawnDirBias
      auxiliaryData.dynamicSpawnDir = 0 -- resets direction scattering
    end

    if data.aiMode then
      -- here is special logic that sets or unsets roles if a different AI mode is set
      -- in other words, this enables modes such as 'flee' or 'chase' to work seamlessly for all vehicles
      if data.aiMode == 'traffic' and veh.roleName == 'empty' then
        veh:setRole(veh._tempRole) -- restores the previous role (or auto role if no previous role was set)
        veh._tempRole = nil
      elseif data.aiMode ~= 'traffic' and veh.roleName ~= 'empty' then
        veh._tempRole = veh.roleName
        veh:setRole('empty') -- prevents role logic from changing AI mode internally
      end
    end
  end

  if data.aiDebug then
    M.debugMode = data.aiDebug == 'traffic'
    gameplay_traffic_trafficUtils.debugMode = M.debugMode
    refreshVehicles()
  end
  if data.activeAmount and vehPool and state == 'on' then -- state needs to be on (not loading) for this to work
    updateTrafficPool()
  end
end

Callers

@/lua/ge/extensions/gameplay/traffic.lua
  value = value and 'traffic' or 'off'
  setTrafficVars({aiDebug = value})
end
  amount = amount or math.huge
  setTrafficVars({activeAmount = amount})
end

    setTrafficVars({aiMode = 'traffic', activeAmount = activeAmount})
  else
  spawnProcess.waitForUi = true
  setTrafficVars({aiMode = 'traffic', enableRandomEvents = true})
  guihooks.trigger('menuHide')
  mode = mode or 'traffic'
  setTrafficVars({aiMode = string.lower(mode)})
end
  if vars.aiMode ~= 'traffic' then -- forces vehicles to refresh their AI modes and roles
    setTrafficVars({aiMode = vars.aiMode})
  end
@/lua/ge/extensions/gameplay/missions/missionManager.lua

    gameplay_traffic.setTrafficVars() -- resets variables
    gameplay_police.setPursuitVars()
  if step.activated then -- runs after the traffic step spawned traffic, or if previous traffic is used
    gameplay_traffic.setTrafficVars({spawnValue = trafficSetup.respawnRate, enableRandomEvents = false})
    if step.validTraffic then -- only if new traffic was created
@/lua/ge/extensions/core/quickAccess.lua
          extensions.gameplay_traffic.activate()
          extensions.gameplay_traffic.setTrafficVars({aiMode = "traffic", enableRandomEvents = true})
          extensions.telemetry_core.startActivity("trafficEnabled")
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficParams.lua
  if next(self.vars) then
    gameplay_traffic.setTrafficVars(self.vars)
  end
@/lua/ge/extensions/flowgraph/modules/trafficModule.lua
    if self.trafficActive then
      gameplay_traffic.setTrafficVars()
      gameplay_police.setPursuitVars()
@/ui/modules/apps/Traffic/app.js
      this.setAiMode = function () {
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({aiMode: this.aiModeOptions})} )`)
        bngApi.engineLua(`extensions.hook("trackAIAllVeh", ${bngApi.serializeToLua(this.aiModeOptions)} )`)
      this.setDebugMode = function () {
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({aiDebug: this.debugOptions})} )`)
      }
      this.setAwareMode = function () {
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({aiAware: this.awareOptions})} )`)
      }
        var value = !$scope.legalSpeed ? this.speedLimit / $scope.conversions[Number($scope.metric)] : -1
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({speedLimit: value})} )`)
      }
      this.setSpawnValue = function () {
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({spawnValue: this.spawnValue})} )`)
      }
      this.setAggression = function () {
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars( ${bngApi.serializeToLua({baseAggression: this.aggression})} )`)
      }
        bngApi.engineLua(`extensions.gameplay_traffic.activate()`)
        bngApi.engineLua(`extensions.gameplay_traffic.setTrafficVars({enableRandomEvents = true})`)
        if (bngApi.engineLua(`gameplay_traffic.getNumOfTraffic()`) > 0) {
@/lua/ge/extensions/editor/trafficDebug.lua
  if im.InputInt("Active Traffic Amount", var, 1) then
    gameplay_traffic.setTrafficVars({activeAmount = math.max(0, var[0])})
  end
  if im.InputFloat("Respawn Rate", var, 0.1, nil, "%.1f") then
    gameplay_traffic.setTrafficVars({spawnValue = clamp(var[0], 0, 3)})
  end
  if im.InputFloat("Respawn Direction Bias", var, 0.1, nil, "%.1f") then
    gameplay_traffic.setTrafficVars({spawnDirBias = clamp(var[0], -1, 1)})
  end
  if im.InputFloat("AI Aggression", var, 0.05, nil, "%.2f") then
    gameplay_traffic.setTrafficVars({baseAggression = clamp(var[0], 0.1, 2)})
  end
  if im.InputFloat("AI Speed Limit", var, 0.5, nil, "%.1f") then
    gameplay_traffic.setTrafficVars({speedLimit = clamp(var[0], -1, 100)})
  end
  if im.Checkbox("AI Awareness", var) then
    gameplay_traffic.setTrafficVars({aiAware = var[0] and "on" or "off"})
  end
  if im.Checkbox("Enable Random Events", var) then
    gameplay_traffic.setTrafficVars({enableRandomEvents = var[0]})
  end
@/lua/ge/extensions/util/stepHandler.lua
  if step.state == 2 then
    gameplay_traffic.setTrafficVars({activeAmount = step.options.active})
    gameplay_traffic.activate(step.vehIds)
@/lua/ge/extensions/career/modules/playerDriving.lua

local function setTrafficVars()
  -- temporary police adjustment
  -- temporary police adjustment
  gameplay_traffic.setTrafficVars({enableRandomEvents = false})
  gameplay_police.setPursuitVars({arrestRadius = 15, evadeTime = 30})
    gameplay_traffic.setupTraffic(restrict and testTrafficAmounts.traffic + extraAmount or amount + extraAmount, 0, {policeAmount = policeAmount, simpleVehs = true, autoLoadFromFile = true})
    setTrafficVars()

  setTrafficVars()
end