GE Lua Documentation

Press F to search!

getDefaultVehicleParams

Definition


-- @/lua/ge/extensions/core/vehicles.lua:2272

local function getDefaultVehicleParams()
  log('D', 'main', 'Loading default vehicle')
  local arg = parseArgs.args.vehicleConfig
  if arg then
    local pathConfig = "vehicles/"..arg
    local modelRegexPC  = "^([%w|_|%-|%s]+)/(.*)%.pc"
    local model, _ = string.match(arg, modelRegexPC)
    local modelData = M.getModel(model)
    if modelData and next(modelData) then
      return {model, {config = pathConfig}}
    else
      log('E', 'main', "Model of vehicle via parseArgs (" ..dumps(arg)..") ("..dumps(model)..") doesn't exist.")
    end
  end
  local myveh = TorqueScriptLua.getVar('$beamngVehicleArgs')
  if myveh ~= ""  then
    --TorqueScriptLua.setVar( '$beamngVehicle', myveh )
    local mycolor = getVehicleColor()
    log('I', 'main', 'myColor = '..dumps(mycolor))
    --TorqueScriptLua.setVar( '$beamngVehicleColor', mycolor )
    local myvehModel = M.getModel(myveh)
    if myvehModel and next(myvehModel) then
      return {myveh, {color = mycolor}}
    else
      log('E', 'main', "Model of vehicle via TorqueScriptLua.getVar('$beamngVehicleArgs') (" ..dumps(myveh)..") doesn't exist.")
    end
  end

  local dir = FS:directoryExists('vehicles')
  if not dir then
    log('E', 'main', '"/vehicles/" directory not found!')
    return nil
  end

  local data = jsonReadFile(pathDefaultConfig)
  if not data then
    return defaultPickupParams
  end

  if not data.format or data.format == 2 then
    if data.model then
      if next(FS:findFiles('/vehicles/'..data.model..'/', '*.jbeam', 1, false, false)) then
        --TorqueScriptLua.setVar( '$beamngVehicle', data.model ) -- Set the model
        --TorqueScriptLua.setVar( '$beamngVehicleConfig', pathDefaultConfig ) -- Set the parts and color
        --TorqueScriptLua.setVar( '$beamngVehicleLicenseName', data.licenseName and data.licenseName or "") -- Set the license plate
        return {data.model, {config = pathDefaultConfig, licenseText = data.licenseName and data.licenseName or ""}}
      else
        log('E', 'main', "Model of default vehicle doesn't exist. Loading default pickup.")
        return defaultPickupParams
      end
    else
      return defaultPickupParams
    end
  elseif data.format == 4 then
    local allVehDirsExist = false

    if type(data.vehicles) == "table" and next(data.vehicles) then
      local visitedDirs = {}
      allVehDirsExist = true
      for vehIdx, vehData in ipairs(data.vehicles) do
        local modelName
        if vehData.model then
          modelName = vehData.model
        elseif vehData.linkedPCFile then
          modelName = string.match(vehData.linkedPCFile, 'vehicles/([%w|_|%-|%s]+)')
        end

        if not modelName then
          allVehDirsExist = false
          break
        end

        if not visitedDirs[modelName] then
          if not next(FS:findFiles('/vehicles/'..modelName..'/', '*.jbeam', 1, false, false)) then
            allVehDirsExist = false
            break
          end
          visitedDirs[modelName] = true
        end
      end
    else
      log('E', 'main', "No vehicles exist in default vehicle collection. Loading default pickup.")
      return defaultPickupParams
    end

    if allVehDirsExist then
      local pcData = data.vehicles[1]
      if not pcData then
        log('E', 'main', "No vehicles exist in default vehicle collection. Loading default pickup.")
        return defaultPickupParams
      end

      local modelName
      if pcData.model then
        modelName = pcData.model
      elseif pcData.linkedPCFile then
        modelName = string.match(pcData.linkedPCFile, 'vehicles/([%w|_|%-|%s]+)')
      end

      if modelName then
        --TorqueScriptLua.setVar( '$beamngVehicle', modelName ) -- Set the model
        --TorqueScriptLua.setVar( '$beamngVehicleConfig', pathDefaultConfig ) -- Set the parts and color
        --TorqueScriptLua.setVar( '$beamngVehicleLicenseName', data.licenseName and data.licenseName or "") -- Set the license plate
        return {modelName, {config = pathDefaultConfig, licenseText = data.licenseName and data.licenseName or ""}}
      else
        log('E', 'main', "Model of first vehicle in default vehicle collection couldn't be determined. Loading default pickup.")
        return defaultPickupParams
      end
    else
      log('E', 'main', "Model(s) of default vehicle collection don't exist. Loading default pickup.")
      return defaultPickupParams
    end
  end
end

Callers

@/lua/ge/extensions/core/levels.lua
    -- spawn default vehicle
    nextSpawnVehicle = core_vehicles.getDefaultVehicleParams()
  end
      log("E", "", "Model: "..dumps(model).." does not exist. using default vehicle instead.")
      nextSpawnVehicle = core_vehicles.getDefaultVehicleParams()
      model, options = unpack(nextSpawnVehicle)