trackbuilder/trackBuilder - Track Builder Editor UI
Reference for `extensions.trackbuilder.trackBuilder`, the ImGui-based editor UI for building procedural race tracks.
Reference for extensions.trackbuilder.trackBuilder, the ImGui-based editor UI for building procedural race tracks.
Overview
Comprehensive track building tool with a full ImGui editor interface. Supports creating tracks from parametric pieces (curves, straights, S-curves, loops, beziers, spirals), modifying per-piece properties (banking, height, width), painting materials, editing borders/walls/ceilings, placing obstacles, managing checkpoints, and driving the finished track. Includes a complete material editor with drag-and-drop texture/decal assignment.
Key Components
Piece Types
| Type | Parameters |
|---|---|
freeCurve | radius, length, direction |
freeForward | length |
freeOffsetCurve | length, xOffset, hardness |
freeLoop | radius, xOffset |
freeBezier | xOff, yOff, dirOff, forwardLen, backwardLen, absolute, empty |
freeSpiral | size, angle, inside, direction |
Modifiers (Per-Piece)
| Modifier | Range | Description |
|---|---|---|
bank | -720° to 720° | Track banking angle |
height | -500m to 2000m | Track elevation |
width | 0 to 50m | Track width |
leftMesh / rightMesh | Border types | Border mesh shape |
centerMesh | Center types | Center mesh shape |
leftWall / rightWall | 0-50m height | Side walls |
ceilingMesh | 0-50m height | Ceiling/tunnel |
checkpoint | position, size | Race checkpoint |
obstacles | up to 10 per piece | Placed objects |
Border Types
regular, bevel, wideBevel, highBevel, smallDiagonal, bigDiagonal, rail, none, demoConvex, smoothedRect, racetrack
Obstacle Types
cube, bump, sharp, ramp, obstacle, ring, cylinder, cone
Material Editor
Full material system with 8 material slots (A-H), each with:
- Base texture: Shared diffuse map for center and border
- Center decal: Glow map for center lane
- Border decal: Glow map for border
- Base/glow colors: RGBA color tinting
- Glow toggle: Emissive rendering
- Ground model: Physics material (affects tire friction)
- Paint mode: Click-to-paint materials on track segments
Supports drag-and-drop for textures and decal maps.
Editor Windows
| Window | Content |
|---|---|
| Main toolbar | Piece placement, navigation, undo/redo |
| Advanced modifiers | Banking, height, width with shift/ctrl step buttons |
| Borders & Centers | Border/center mesh selection and click-to-change |
| Walls & Ceiling | Wall height, ceiling, interpolation |
| Material Editor | Texture, color, glow, ground model, paint |
| Obstacles | Per-piece obstacle placement with transforms |
| Settings | Time of day, fog, race settings, track position |
| Save/Load | File management, preview screenshots |
How It Works
-- Track builder is opened via the editor
-- Internally managed by editor_trackBuilder and the tb (track builder core) module
-- Navigation between pieces
tbFunctions.navigate(1) -- next piece
tbFunctions.navigate(-1) -- previous piece
tbFunctions.navigate('first')
tbFunctions.navigate('last')
-- Modify current piece
modifierValues.bank.value[0] = 45
tbFunctions.modifierChange('bank')
modifierValues.width.value[0] = 15
tbFunctions.modifierChange('width')
-- Material painting (in Paint mode)
-- Click on track segments to apply selected material
selectMode("Paint")Notes
- Uses ImGui for all UI rendering
- Track position can be aligned to camera or vehicle
- Supports multi-sub-track editing
- Materials use PersistenceManager for save/load
- Ground model changes require "Drive" to apply
- Screenshot/preview functionality with hidden-UI capture
- Extensive i18n support via
translateLanguage()
M.showTrackBuilder()
Shows the track builder UI.
- Returns: None
M.hideTrackBuilder()
Hides the track builder UI.
- Returns: None
M.toggleTrackBuilder()
Toggles the track builder UI visibility.
- Returns: None
M.showTrackBuilderWindow(show)
Controls track builder window visibility.
- Parameters:
show- boolean - Whether to show or hide - Returns: None
M.onWindowResized(size)
Hook called when the game window is resized.
- Parameters:
size- table - New window dimensions - Returns: None
M.onUpdate()
Per-frame update hook for the track builder.
- Returns: None
M.onClientEndMission()
Hook called when a mission ends, cleans up track builder state.
- Returns: None
telemetry/core - Telemetry Event Collection System
Reference for `extensions.telemetry.core`, the central telemetry system that collects, buffers, and persists gameplay events to JSONL files.
ui/ambientSound - Ambient Sound Stream Player
Reference for `extensions.ui.ambientSound`, which plays randomized ambient sound streams from JSON configuration files.