GE Lua Documentation

Press F to search!

setupSignals

Definition


-- @/lua/ge/extensions/core/trafficSignals.lua:1337

local function setupSignals(data, merge) -- processes and enables the signals system; can merge with existing ones
  if not be then return end
  loaded = false
  active = false

  table.clear(instancesByName)
  table.clear(controllersByName)
  table.clear(sequencesByName)
  table.clear(elementsById)

  if data then
    setupSignalObjects()

    if merge then -- merges existing and new data
      arrayConcat(instances, data.instances or {})
      arrayConcat(controllers, data.controllers or {})
      arrayConcat(sequences, data.sequences or {})
    else
      instances = data.instances or {}
      controllers = data.controllers or {}
      sequences = data.sequences or {}
    end

    local delInstances, delControllers, delSequences = {}, {}, {}
    for i, v in ipairs(instances) do
      if not elementsById[v.id] then
        instancesByName[v.name] = v
        elementsById[v.id] = v
      else
        table.insert(delInstances, i)
      end
    end
    for i, v in ipairs(controllers) do
      if not elementsById[v.id] then
        controllersByName[v.name] = v
        elementsById[v.id] = v
      else
        table.insert(delControllers, i)
      end
    end
    for i, v in ipairs(sequences) do
      if not elementsById[v.id] then
        sequencesByName[v.name] = v
        elementsById[v.id] = v
      else
        table.insert(delSequences, i)
      end
    end

    -- remove invalid elements
    for i = #delInstances, 1, -1 do
      table.remove(instances, delInstances[i])
    end
    for i = #delControllers, 1, -1 do
      table.remove(controllers, delControllers[i])
    end
    for i = #delSequences, 1, -1 do
      table.remove(sequences, delSequences[i])
    end

    setActive(true)
  else
    table.clear(instances)
    table.clear(controllers)
    table.clear(sequences)
  end
end

Callers

@/lua/ge/extensions/editor/trafficManager.lua
  if data.instances[1] then
    core_trafficSignals.setupSignals(data, options.signalsKeepOriginal[0])
    core_trafficSignals.setActive(true, true)
@/lua/ge/extensions/editor/trafficSignalsEditor.lua

    trafficSignals.setupSignals(getCurrentSignals())
    trafficSignals.debugLevel = 2
@/lua/ge/extensions/core/trafficSignals.lua
local function resetSignals() -- clears signals
  setupSignals()
end

      setupSignals(data)
      log('I', logTag, string.format('Traffic signals loaded (%d instances, %d controllers, %d sequences)', #data.instances, #data.controllers, #data.sequences))