RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

server/commands - Camera & Input Commandsge_utils - Game Engine Utility Functionsmain.lua - GE Lua Entry Point & Game Loopmap.lua - Navigation Graph (AI Road Map)screenshot.lua - Screenshot Systemserver/server - Level Loading & Game ServerserverConnection - Client-Server Connection Manager`setSpawnpoint` - Default Spawn Point Persistence`simTimeAuthority` - Simulation Time & Bullet Time Control`spawn` - Vehicle Spawning & Safe Placement`suspensionFrequencyTester` - Suspension Natural Frequency Analysis
ui/ambientSound - Ambient Sound Stream PlayerUI Apps ManagerUI AudioBindings LegendCamera Distance AppConsole (consoleNG)Credits MusicExternal App (WebSocket UI Server)Fade ScreenGame BlurGameplay App ContainersGrid SelectorLivery EditorMessages DebuggerMessages/Tasks App ContainersMission InfoPolice InfoTop BarUI ModsUI Navigation / MapVehicle Paint EditorVehicle Vicinity AppUI Visibility
Vehicle Selector – Details InteractionVehicle Selector – GeneralVehicle Selector – Tile ClusteringVehicle Selector – Tile GroupingVehicle Selector – TilesVehicle Selector – Tile SortingVehicle Selector – Vehicle OperationsVehicle Selector – Vehicle 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 – General

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

Vehicle Selector – Details Interaction

Coordinates vehicle details display with spawn/replace button actions.

Vehicle Selector – 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 Exports