GE Lua Documentation

Press F to search!

spawnGroup

Definition


-- @/lua/ge/extensions/core/multiSpawn.lua:751

local function spawnGroup(group, amount, options) -- spawns a given vehicle group
  if not amount or amount <= 0 then
    log('W', logTag, 'Spawn amount is zero!')
    return
  end

  if spawningBusy then
    table.insert(queue, {group, amount, options})
    log('I', logTag, 'Added vehicle group to queue, it will spawn when ready')
    return
  end

  if not group or not group[1] then
    log('W', logTag, 'Could not parse vehicle group data, now creating default group...')
    group = createGroup()
  end

  options = options or {}
  options.name = options.name or 'custom' -- group name
  options.mode = options.mode or 'roadAhead' -- vehicle spawning method
  options.gap = options.gap or 15 -- spacing between spawn positions

  if options.randomPaints then
    for _, v in ipairs(group) do
      local modelData = core_vehicles.getModel(v.model or '')
      local configData = modelData.configs and modelData.configs[v.config or '']
      if configData then
        local configType = configData['Config Type']
        if not configType or configType == 'Factory' then -- only use random paints for factory or unknown configs
          v.randomPaints = true
        end
      else
        v.randomPaints = true
      end
    end
  end

  if options.shuffle then -- randomize group order
    group = arrayShuffle(deepcopy(group))
  end

  spawningBusy = true
  log('I', logTag, string.format('Spawning vehicle group with %d vehicles: %s', amount, options.name or ''))
  return spawnProcessedGroup(setVehicleSpawnData(group, amount), options) -- returns unique group id
end

Callers

@/lua/ge/extensions/core/multiSpawn.lua
    table.remove(queue, 1)
    M.spawnGroup(unpack(args))
  end
  log('W', logTag, 'This function is deprecated, please use function: spawnGroup')
  return spawnGroup(createGroup(), amount, {shuffle = shuffle, mode = spawnMode, gap = spawnGap})
end
@/lua/ge/extensions/editor/trafficManager.lua

      core_multiSpawn.spawnGroup(vehGroup, options.vehicleMulti[0], spawnOptions)
    end
@/lua/ge/extensions/util/stepHandler.lua
    local group = core_multiSpawn.createGroup(step.options.amount, step.options.generator)
    step.groupId = core_multiSpawn.spawnGroup(group, step.options.amount, {name = group.name, shuffle = true, mode = "traffic"})
    step.waitForVehicleGroup = true
@/lua/ge/extensions/gameplay/traffic.lua

  return core_multiSpawn.spawnGroup(groupData, amount, {name = 'autoTraffic', mode = options.mode or 'traffic', gap = options.gap or 20, pos = options.pos, dir = options.dir,
  ignoreJobSystem = not auxiliaryData.worldLoaded, ignoreAdjust = not auxiliaryData.worldLoaded, randomPaints = true})
@/ui/modules/apps/Traffic/app.js
      this.spawn = function () {
        bngApi.engineLua(`extensions.core_multiSpawn.spawnGroup(extensions.gameplay_traffic_trafficUtils.createTrafficGroup(20), ${bngApi.serializeToLua(this.amount)})`)
      }
@/lua/ge/extensions/gameplay/parking.lua

  core_multiSpawn.spawnGroup(group, amount, {name = "autoParking", mode = "roadBehind", gap = 50, customTransforms = transforms, instant = not worldLoaded,
  ignoreAdjust = not worldLoaded, randomPaints = true})
@/lua/ge/extensions/flowgraph/nodes/gameplay/traffic/trafficSpawnGroup.lua

        self.groupId = core_multiSpawn.spawnGroup(group.data, quantity, options)
        self.state = 1
@/lua/ge/extensions/editor/multiSpawnManager.lua

local function spawnGroup() -- spawns the current vehicle group into the world
  im.TextUnformatted("Spawn Group")
      if spawnState == 1 then
        core_multiSpawn.spawnGroup(tempGroup, imValues.amount[0], {name = options.groupKey, shuffle = imValues.shuffle[0], mode = options.spawnMode, gap = imValues.spawnGap[0]})
        tempGroup = nil
      im.Separator()
      spawnGroup()
    else