RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Ambient SoundUI Apps ManagerUI AudioBindings LegendCamera Distance AppDeveloper ConsoleCredits MusicExternal WebSocket ServerFade ScreenGame BlurGameplay App ContainersGrid SelectorLivery EditorMessages DebuggerMessages/Tasks App ContainersMission InfoPolice InfoTop BarUI ModsNavigation Map DataVehicle Paint EditorVehicle Vicinity AppUI Visibility
Details InteractionVehicle SelectorTile ClusteringTile GroupingTilesTile SortingVehicle OperationsVehicle Specifications

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE ExtensionsuivehicleSelector

Vehicle Selector

Central hub for the vehicle selector: data initialization, filtering, display settings, favourites, and opening modes.

Central hub for the vehicle selector: data initialization, filtering, display settings, favourites, and opening modes.


Overview

ui_vehicleSelector_general is the main entry point for the vehicle selector system. It initializes vehicle/config data from core_vehicles, manages display settings (group/sort/cluster mode), handles filtering, tracks favourites and recent selections, and provides multiple "open" APIs for freeroam, challenge, and configurator contexts.

Extension path: lua/ge/extensions/ui/vehicleSelector/general.lua Dependencies: core_vehicles, ui_vehicleSelector_detailsInteraction, ui_vehicleSelector_tiles


Exports (M) - Key Functions

FunctionSignatureDescription
getUiData() → tableReturns (and lazily initializes) all vehicle data, filters, display settings.
getTiles(...)Delegates to ui_vehicleSelector_tiles.getTiles.
getDetails(...)Delegates to detailsInteraction.getDetails.
openVehicleSelectorForFreeroam()Opens selector in freeroam mode (spawn/replace).
openVehicleSelectorForFreeroamWithMod(modId)Opens filtered to a specific mod.
openVehicleSelectorForFreeroamConfigurator(callback)Opens for vehicle selection with a callback.
openVehicleSelectorForChallenge(callback)Opens for challenge mode (currently WIP/disabled).
closedFromUI()Cleanup when selector is closed by UI.
clearCache()Forces re-initialization of vehicle data.
getScreenHeaderTitleAndPath(path) → tableReturns breadcrumb title and path segments for the header.
onModManagerStateChanged()Hook - clears vehicle cache when mod manager state changes.
updateDisplayData(...)Updates vehicle display data.
updateFilterData(...)Updates filter data.
isRecent(model, config)Checks if a vehicle was recently used (alias: isRecentVehicle).
trackRecent(model, config)Marks a vehicle as recently used (alias: trackRecentVehicle).
getActiveFilters(...)Returns currently active filter state.
profilerFinish(...)Finishes a profiler measurement.
setCustomDetailsButtons(...)Sets custom buttons for the detail panel.
getCustomDetailsButtons()Returns the current custom detail buttons.
getManagementDetails(...)Returns management detail data for a vehicle.
exitCallback(...)Callback invoked on exit from the selector.
exploreFolder(...)Opens the file explorer for a vehicle's folder.
goToMod(...)Navigates to the mod page for a vehicle.
isFilterLocked(...)Checks if a specific filter is locked.
createFilters(...)Creates the vehicle filter set.
onSettingsChanged()Hook - marks vehicle data as changed when settings change.
executeButton(...)Executes a management button action.
executeDoubleClick(...)Executes the double-click action for a tile.
setManagementButtonsEnabled(...)Enables/disables management buttons.
setDetailsButtonForFreeroam(...)Sets the details button for freeroam mode.
openVehicleSelectorForFreeroamModal()Opens the vehicle selector in freeroam modal mode.
emptyProfiler()Returns a no-op profiler instance.
onfilechanged(...)Hook - responds to file changes (lowercase variant).

| getDefaultVehicleInfo | () → table\|nil | Returns default vehicle info from settings/default.pc. | | getDefaultVehicleTile | () → table\|nil | Converts default vehicle info into a selector tile. | | p | LuaProfiler | Profiler instance (default: no-op from emptyProfiler()). |

Filter Functions (delegated)

getFilters, toggleFilter, updateFilters, updateRangeFilter, resetRangeFilter, resetSetFilter, clearAllFilters, lockFilter, unlockFilter, lockFilterMode, lockFilterModeExclusive, clearLockedFilters, calculateActiveFilters, setupValidFilters, getValidFilters, passesFilters, getSearchText, setSearchText

Display Functions (delegated)

getDisplayData, getDisplayDataOptions, setDisplayDataOption, resetDisplayDataToDefaults, toggleFavourite, isFavourite, isRecentVehicle, trackRecentVehicle


Data Fields

FieldDescription
M.dependencies{"core_vehicles", "ui_vehicleSelector_detailsInteraction", "ui_vehicleSelector_tiles"} - vehicle data and sub-modules.
(internal) displayDataInstanceLocal display data module instance for managing view preferences (not exported on M).

Internals

Data Initialization

initializeVehicleData() builds:

  • models / configs - flat lists from core_vehicles
  • filterList / filterByProp - from filterModule
  • displayData - persisted settings from /settings/vehicleSelectorData.json

Display Data Options

Configurable options include: Group by (Type/Brand/Country/etc.), Sort by (Name/Value/Weight/etc.), Cluster by, Expand configs, Display size, Filter Reset on Spawn, Recent/Favourites display mode, and developer toggles.

Default Vehicle

getDefaultVehicleInfo() reads settings/default.pc for legacy default vehicle support. getDefaultVehicleTile() converts it into a tile for the grid.

Cache Invalidation

onModActivated, onModDeactivated, onModManagerReady all set vehicleDataChanged = true, forcing re-initialization on next getUiData() call.


How It Works

  1. UI navigates to vehicle selector → one of the openVehicleSelectorFor* functions is called.
  2. This initializes data via getUiData(), configures buttons/filters, and triggers ChangeState.
  3. The UI calls getTiles(path) to get grouped/clustered/sorted vehicle tiles.
  4. On tile selection, getDetails returns specs and action buttons.
  5. On close, closedFromUI resets filters and callbacks.

Lua Examples

-- Open the vehicle selector
extensions.ui_vehicleSelector_general.openVehicleSelectorForFreeroam()

-- Check if a vehicle is favourited
local fav = extensions.ui_vehicleSelector_general.isFavourite("pickup", "base")

-- Track a recently used vehicle
extensions.ui_vehicleSelector_general.trackRecentVehicle("pickup", "base")

-- Force refresh after mod changes
extensions.ui_vehicleSelector_general.clearCache()

Hooks

HookWhen
onVehicleSelectorOpen (ext)Selector opened
onVehicleSelectorClosed (ext)Selector closed
gridSelectorRefreshAll (guihook)Data refresh requested
ChangeState (guihook)UI navigation triggered

Additional Exports

The following exports are available but not yet documented in detail:

  • M.calculateActiveFilters
  • M.clearAllFilters
  • M.clearCache
  • M.clearLockedFilters
  • M.closedFromUI
  • M.createFilters
  • M.emptyProfiler
  • M.executeButton
  • M.executeDoubleClick
  • M.getDefaultVehicleInfo
  • M.getDefaultVehicleTile
  • M.getDetails
  • M.getDisplayData
  • M.getDisplayDataOptions
  • M.getFilters
  • M.getManagementDetails
  • M.getScreenHeaderTitleAndPath
  • M.getSearchText
  • M.getTiles
  • M.getUiData
  • M.getValidFilters
  • M.goToMod
  • M.isFavourite
  • M.isFilterLocked
  • M.isRecentVehicle
  • M.lockFilter
  • M.lockFilterMode
  • M.lockFilterModeExclusive
  • M.onModActivated
  • M.onModDeactivated
  • M.onModManagerReady
  • M.onModManagerStateChanged
  • M.onfilechanged
  • M.openVehicleSelectorForChallenge
  • M.openVehicleSelectorForFreeroam
  • M.openVehicleSelectorForFreeroamConfigurator
  • M.openVehicleSelectorForFreeroamModal
  • M.openVehicleSelectorForFreeroamWithMod
  • M.p
  • M.passesFilters
  • M.profilerFinish
  • M.resetDisplayDataToDefaults
  • M.resetRangeFilter
  • M.resetSetFilter
  • M.setCustomDetailsButtons
  • M.setDetailsButtonForFreeroam
  • M.setDisplayDataOption
  • M.setManagementButtonsEnabled
  • M.setSearchText
  • M.setupValidFilters
  • M.toggleFavourite
  • M.toggleFilter
  • M.trackRecentVehicle
  • M.unlockFilter
  • M.updateFilters
  • M.updateRangeFilter

See Also

  • Vehicle Selector – Details Interaction - Related reference
  • Vehicle Selector – Tile Clustering - Related reference
  • Vehicle Selector – Tile Grouping - Related reference
  • UI System Guide - Guide

Details Interaction

Coordinates vehicle details display with spawn/replace button actions.

Tile Clustering

Groups vehicle configurations into clustered tiles by brand/model or model key.

On this page

OverviewExports (M) - Key FunctionsFilter Functions (delegated)Display Functions (delegated)Data FieldsInternalsData InitializationDisplay Data OptionsDefault VehicleCache InvalidationHow It WorksLua ExamplesHooksAdditional ExportsSee Also