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
| Function | Signature | Description |
|---|---|---|
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
| Function | Description |
|---|---|
M.selectPrevPacenote / M.selectNextPacenote | Navigate between pacenotes |
M.insertMode | Enter insert mode for pacenotes |
M.setFreeCam | Switch to free camera preserving position |
M.deselect | Deselect current pacenote |
M.selectNextWaypoint | Select next waypoint within pacenote |
M.moveSelectedWaypointForward/Backward | Move waypoint along snaproad with debounce |
M.cameraPathPlay | Play camera path |
M.toggleCornerCalls | Toggle corner call playback |
M.changeDebugDrawOpacity | Adjust debug draw opacity |
M.zoomIn / M.zoomOut | Camera zoom with debounce (pacenoteOrbit camera) |
Sub-Module Tabs
| Tab | Module | Description |
|---|---|---|
| Notebook Info | rallyEditor/notebookInfo | Notebook metadata |
| Pacenotes | rallyEditor/pacenotes | Co-driver note editing |
| Driveline Editor | rallyEditor/drivelineTab | Stage driveline spline editing |
| Mission Settings | rallyEditor/missionSettings | Mission configuration |
| Static | rallyEditor/static | Static data management |
| Measurements | rallyEditor/measurementsTab | Distance measurements |
| Test (dev only) | rallyEditor/testTab | Testing tools (requires dev.txt) |
Preferences
| Preference | Type | Default | Description |
|---|---|---|---|
lockWaypoints | bool | false | Lock waypoint positions (hidden) |
showPreviousPacenote | bool | true | Render previous pacenote for reference |
showNextPacenote | bool | true | Render next pacenote for reference |
defaultRadius | int | 8 | Visual radius for waypoints (1–50) |
pacenoteNoteFieldWidth | int | 300 | Width of freeform note text field (1–1000) |
Auxiliary Windows
| Window | Description |
|---|---|
| Dev Tools | DevTools instance for rally development |
| Rally Toolbox | RallyToolbox 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.txtfile. - Notebook auto-detection uses
MissionSettingsto 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.allowGizmoM.devToolsWindowOpenM.getCurrentFilenameM.getCurrentPathM.getMissionDirM.getMissionIdM.getPacenotesWindowM.getPrefDefaultRadiusM.getPrefLockWaypointsM.getPrefShowNextPacenoteM.getPrefShowPreviousPacenoteM.getPrefUiPacenoteNoteFieldWidthM.getVolatilePreferencesM.isPacenotesToolsSectionExpandedM.isToolboxOpenM.isVisibleM.mouseWheelZoomM.moveSelectedWaypointBackwardM.onEditorToolWindowHideM.onVehicleResettedM.onWindowGotFocusM.rallyToolboxWindowOpenM.setPrefLockWaypoints
See Also
- Editor AI Tests - Related reference
- Editor AI Visualization - Related reference
- Editor – Assembly Spline Tool - Related reference
- World Editor Guide - Guide