RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Editor AI TestsEditor AI VisualizationEditor – Assembly Spline ToolAsset BrowserAsset DeduplicatorAsset Management ToolSFX Previewer (Audio Events List)Audio Ribbon EditorAutoSaveBarriers EditorBiome ToolBuilding EditorBulk RenameCamera BookmarksCamera TransformCamera Path EditorCEF HelperCo-Simulation Signal EditorCrawl Data EditorCreate Object ToolDataBlock EditorDecal EditorDecal Spline EditorDocumentation HelperDrag Race EditorDrift Data EditorDrive Path EditorDynamic Decals Tool (Vehicle Livery Creator)Engine Audio DebugExtensions DebugExtensions EditorFFI Pointer Leak TestFile DialogFlowgraph EditorForest EditorForest ViewEditor Gizmo HelperEditor Ground Model Debug HelperEditor Headless Editor TestEditor Icon OverviewEditor ImGui C DemoEditor InspectorEditor Layout ManagerEditor Level SettingsEditor Level ValidatorEditor LoggerEditor Log HelperEditor MainEditor Main MenuEditor Main ToolbarEditor Main UpdateMap Sensor EditorMaster Spline EditorMaterial EditorMeasures Inspector HeaderMesh Editor (Base)Mesh Road EditorMesh Spline EditorMission EditorMission PlaybookMission Start Position EditorMulti Spawn Manager (Vehicle Groups)Navigation Mesh EditorEditor News MessageObject Tool (Object Select Edit Mode)Object To Spline EditorParticle EditorPerformance Profiler / Camera RecorderPhysics ReloaderPrefab Instance EditorEditor PreferencesRace / Path EditorRally EditorRaycast Test Editor ToolRenderer Components Editor ToolRender Test Editor ToolResource Checker Editor ToolRiver EditorRoad Architect EditorRoad DecorationsRoad Editor (Decal Road)Road Network ExporterRoad River Cache HandlerRoad River GUIRoad Spline EditorRoad Template EditorRoad UtilitiesScene TreeScene ViewScreenshot Creator BootstrapScript AI EditorScript AI ManagerSensor Configuration EditorSensor DebuggerShape EditorShortcut LegendSidewalk Spline EditorSites EditorSlot Traffic EditorSuspension Audio DebugTech Server ManagerTerraform ToolTerrain And Road ImporterTerrain EditorTerrain Materials EditorText EditorTool ManagerTool ShortcutsTraffic DebugTraffic ManagerTraffic Signals EditorUndo History ViewerVehicle Bridge TestVehicle Detail ViewerVehicle Editor MainEditor - VisualizationEditor Viz HelperEditor Water Object HelperEditor Windows Manager

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 Extensionseditor

Rally Editor

Main editor for rally stage notebooks - manages pacenotes, driveline editing, mission settings, measurements, and testing.

Main editor for rally stage notebooks - manages pacenotes, driveline editing, mission settings, measurements, and testing.


Overview

A tabbed editor window for editing rally notebook files. Provides sub-tabs for notebook info, pacenotes, driveline editing, static data, measurements, and testing (dev-only). Supports save/load, input actions for pacenote navigation, camera control, and waypoint manipulation with debounced keyboard input.


Public Functions

FunctionSignatureDescription
M.onEditorGui(dtReal, dtSim, dtRaw)Renders the rally editor window with menu bar and tabs
M.onEditorInitialized()Registers notebookEditMode, window, and loads sub-tabs
M.onEditorRegisterPreferences(prefsRegistry)Registers rallyEditor preferences
M.onSerialize / M.onDeserialized(...)Session persistence for notebook state
M.show()Opens the editor and activates notebook edit mode
M.showRallyTool()Shows/focuses the rally editor with pacenotes tab
M.showPacenotesTab()Programmatically switches to the pacenotes tab
M.loadNotebook(fullFilename)Loads an existing notebook file
M.loadOrCreateNotebook(fullFilename)Loads or creates a new notebook
M.saveNotebook()Saves the current notebook
M.loadForMissionEditor(missionDir)Detects and loads the notebook for a mission
M.detectNotebookToLoad(missionDir)Returns the notebook filename from mission settings
M.listNotebooks(folder)Lists all .notebook.json files in a folder

Input Actions

FunctionDescription
M.selectPrevPacenote / M.selectNextPacenoteNavigate between pacenotes
M.insertModeEnter insert mode for pacenotes
M.setFreeCamSwitch to free camera preserving position
M.deselectDeselect current pacenote
M.selectNextWaypointSelect next waypoint within pacenote
M.moveSelectedWaypointForward/BackwardMove waypoint along snaproad with debounce
M.cameraPathPlayPlay camera path
M.toggleCornerCallsToggle corner call playback
M.changeDebugDrawOpacityAdjust debug draw opacity
M.zoomIn / M.zoomOutCamera zoom with debounce (pacenoteOrbit camera)

Sub-Module Tabs

TabModuleDescription
Notebook InforallyEditor/notebookInfoNotebook metadata
PacenotesrallyEditor/pacenotesCo-driver note editing
Driveline EditorrallyEditor/drivelineTabStage driveline spline editing
Mission SettingsrallyEditor/missionSettingsMission configuration
StaticrallyEditor/staticStatic data management
MeasurementsrallyEditor/measurementsTabDistance measurements
Test (dev only)rallyEditor/testTabTesting tools (requires dev.txt)

Preferences

PreferenceTypeDefaultDescription
lockWaypointsboolfalseLock waypoint positions (hidden)
showPreviousPacenotebooltrueRender previous pacenote for reference
showNextPacenotebooltrueRender next pacenote for reference
defaultRadiusint8Visual radius for waypoints (1–50)
pacenoteNoteFieldWidthint300Width of freeform note text field (1–1000)

Auxiliary Windows

WindowDescription
Dev ToolsDevTools instance for rally development
Rally ToolboxRallyToolbox with RallyManager integration

Notes

  • Uses actionMap = "rallyEditor" for dedicated keyboard bindings.
  • Waypoint movement uses debounced input (0.25s default, faster with Shift, larger steps with Ctrl).
  • "Generate All Freeform" creates freeform text from structured pacenote data with confirmation dialog.
  • Dev-only features (test tab) enabled by presence of dev.txt file.
  • Notebook auto-detection uses MissionSettings to find the active notebook path.

Module Variables

  • devToolsWindowOpen (any) - Module variable.
  • rallyToolboxWindowOpen (any) - Module variable.

Functions

allowGizmo()

Handles allow gizmo.

Returns: self

getCurrentPath()

Returns the current path.

Returns: self

isVisible()

Checks if visible.

Returns: self

getVolatilePreferences()

Returns the volatile preferences.

Returns: self

getPacenotesWindow()

Returns the pacenotes window.

Returns: self

getMissionDir()

Returns the mission dir.

Returns: self

getMissionId()

Returns the mission id.

Returns: self

isPacenotesToolsSectionExpanded()

Checks if pacenotes tools section expanded.

Returns: self

onVehicleResetted()

Callback for vehicle resetted event.

Returns: self

getCurrentFilename()

Returns the current filename.

Returns: nil

onEditorToolWindowHide(windowName)

Callback for editor tool window hide event.

  • windowName (any)

onWindowGotFocus(windowName)

Callback for window got focus event.

  • windowName (any)

moveSelectedWaypointBackward(v)

Handles move selected waypoint backward.

  • v (any)

getPrefDefaultRadius()

Returns the pref default radius.

Returns: table|any

getPrefLockWaypoints()

Returns the pref lock waypoints.

Returns: getPreference("rallyEditor.editing.lockWaypoints", false)

setPrefLockWaypoints(val)

Sets the pref lock waypoints.

  • val (any)

getPrefShowNextPacenote()

Returns the pref show next pacenote.

Returns: getPreference('rallyEditor.editing.showNextPacenote', true)

getPrefShowPreviousPacenote()

Returns the pref show previous pacenote.

Returns: getPreference('rallyEditor.editing.showPreviousPacenote', tr

getPrefUiPacenoteNoteFieldWidth()

Returns the pref ui pacenote note field width.

Returns: getPreference('rallyEditor.ui.pacenoteNoteFieldWidth', 300)

mouseWheelZoom(val)

Handles mouse wheel zoom.

  • val (any)

isToolboxOpen()

Checks if toolbox open.

Returns: rallyToolboxWindowOpen[0] or devToolsWindowOpen[0]

Module Variables

  • devToolsWindowOpen (any) - Module variable.
  • rallyToolboxWindowOpen (any) - Module variable.

Functions

allowGizmo()

Handles allow gizmo.

Returns: self

getCurrentPath()

Returns the current path.

Returns: self

isVisible()

Checks if visible.

Returns: self

getVolatilePreferences()

Returns the volatile preferences.

Returns: self

getPacenotesWindow()

Returns the pacenotes window.

Returns: self

getMissionDir()

Returns the mission dir.

Returns: self

getMissionId()

Returns the mission id.

Returns: self

isPacenotesToolsSectionExpanded()

Checks if pacenotes tools section expanded.

Returns: self

onVehicleResetted()

Callback for vehicle resetted event.

Returns: self

getCurrentFilename()

Returns the current filename.

Returns: nil

onEditorToolWindowHide(windowName)

Callback for editor tool window hide event.

  • windowName (any)

onWindowGotFocus(windowName)

Callback for window got focus event.

  • windowName (any)

moveSelectedWaypointBackward(v)

Handles move selected waypoint backward.

  • v (any)

getPrefDefaultRadius()

Returns the pref default radius.

Returns: table|any

getPrefLockWaypoints()

Returns the pref lock waypoints.

Returns: getPreference("rallyEditor.editing.lockWaypoints", false)

setPrefLockWaypoints(val)

Sets the pref lock waypoints.

  • val (any)

getPrefShowNextPacenote()

Returns the pref show next pacenote.

Returns: getPreference('rallyEditor.editing.showNextPacenote', true)

getPrefShowPreviousPacenote()

Returns the pref show previous pacenote.

Returns: getPreference('rallyEditor.editing.showPreviousPacenote', tr

getPrefUiPacenoteNoteFieldWidth()

Returns the pref ui pacenote note field width.

Returns: getPreference('rallyEditor.ui.pacenoteNoteFieldWidth', 300)

mouseWheelZoom(val)

Handles mouse wheel zoom.

  • val (any)

isToolboxOpen()

Checks if toolbox open.

Returns: rallyToolboxWindowOpen[0] or devToolsWindowOpen[0]

Additional Exports

  • M.allowGizmo
  • M.devToolsWindowOpen
  • M.getCurrentFilename
  • M.getCurrentPath
  • M.getMissionDir
  • M.getMissionId
  • M.getPacenotesWindow
  • M.getPrefDefaultRadius
  • M.getPrefLockWaypoints
  • M.getPrefShowNextPacenote
  • M.getPrefShowPreviousPacenote
  • M.getPrefUiPacenoteNoteFieldWidth
  • M.getVolatilePreferences
  • M.isPacenotesToolsSectionExpanded
  • M.isToolboxOpen
  • M.isVisible
  • M.mouseWheelZoom
  • M.moveSelectedWaypointBackward
  • M.onEditorToolWindowHide
  • M.onVehicleResetted
  • M.onWindowGotFocus
  • M.rallyToolboxWindowOpen
  • M.setPrefLockWaypoints

See Also

  • Editor AI Tests - Related reference
  • Editor AI Visualization - Related reference
  • Editor – Assembly Spline Tool - Related reference
  • World Editor Guide - Guide

Race / Path Editor

Main editor tool for creating and editing race paths - manages pathnodes, segments, start positions, track layout, time trial metadata, and testing.

Raycast Test Editor Tool

Debug editor tool for testing game engine and physics raycasts with visual feedback.

On this page

OverviewPublic FunctionsInput ActionsSub-Module TabsPreferencesAuxiliary WindowsNotesModule VariablesFunctionsallowGizmo()getCurrentPath()isVisible()getVolatilePreferences()getPacenotesWindow()getMissionDir()getMissionId()isPacenotesToolsSectionExpanded()onVehicleResetted()getCurrentFilename()onEditorToolWindowHide(windowName)onWindowGotFocus(windowName)moveSelectedWaypointBackward(v)getPrefDefaultRadius()getPrefLockWaypoints()setPrefLockWaypoints(val)getPrefShowNextPacenote()getPrefShowPreviousPacenote()getPrefUiPacenoteNoteFieldWidth()mouseWheelZoom(val)isToolboxOpen()Module VariablesFunctionsallowGizmo()getCurrentPath()isVisible()getVolatilePreferences()getPacenotesWindow()getMissionDir()getMissionId()isPacenotesToolsSectionExpanded()onVehicleResetted()getCurrentFilename()onEditorToolWindowHide(windowName)onWindowGotFocus(windowName)moveSelectedWaypointBackward(v)getPrefDefaultRadius()getPrefLockWaypoints()setPrefLockWaypoints(val)getPrefShowNextPacenote()getPrefShowPreviousPacenote()getPrefUiPacenoteNoteFieldWidth()mouseWheelZoom(val)isToolboxOpen()Additional ExportsSee Also