Rally Editor – Pacenotes Tab
Primary editor tab for managing rally pacenotes: selection, creation, drag editing, waypoint manipulation, camera playback, and validation.
Primary editor tab for managing rally pacenotes: selection, creation, drag editing, waypoint manipulation, camera playback, and validation.
Overview
Large class-based tab (C, ~1740 lines) handling the full pacenote editing workflow. Uses a snaproad (loaded via DrivelineV3) for snapping waypoints and measuring corners. Supports mouse-based 3D interaction, gizmo manipulation, and orbit camera.
Class Methods – Selection & Navigation
| Method | Signature | Description |
|---|---|---|
selectPacenote | C:selectPacenote(id) | Selects pacenote by ID; updates snaproad partition, measurements, form. |
selectWaypoint | C:selectWaypoint(id) | Selects waypoint within current pacenote; updates gizmo and snaproad filter. |
deselect | C:deselect() | Deselects waypoint first, then pacenote on second call. |
selectPrevPacenote | C:selectPrevPacenote() | Navigates to previous pacenote respecting search filter. |
selectNextPacenote | C:selectNextPacenote() | Navigates to next pacenote respecting search filter. |
selectNextWaypoint | C:selectNextWaypoint() | Toggles between corner start and corner end waypoints. |
selectRecentPacenote | C:selectRecentPacenote() | Re-selects most recently deselected pacenote. |
selectedPacenote | C:selectedPacenote() | Returns selected pacenote object or nil. |
selectedWaypoint | C:selectedWaypoint() | Returns selected waypoint object or nil. |
Class Methods – Editing
| Method | Signature | Description |
|---|---|---|
deleteSelected | C:deleteSelected() | Deletes the selected pacenote. |
deleteSelectedPacenote | C:deleteSelectedPacenote(shouldSelect) | Removes pacenote; optionally selects adjacent. |
deleteAllPacenotes | C:deleteAllPacenotes() | Clears all pacenotes from notebook. |
createMouseDragPacenote | C:createMouseDragPacenote() | Ctrl+click creation on snaproad with auto-positioning. |
cleanupPacenoteNames | C:cleanupPacenoteNames() | Renumbers pacenote names with undo support. |
autofillDistanceCalls | C:autofillDistanceCalls() | Auto-calculates distance call text between pacenotes. |
refreshPacenotes | C:refreshPacenotes() | Full refresh: names, distance calls, all pacenotes. |
mergeSelectedWithPrevPacenote | C:mergeSelectedWithPrevPacenote() | Merges freeform text with previous pacenote. |
mergeSelectedWithNextPacenote | C:mergeSelectedWithNextPacenote() | Merges freeform text with next pacenote. |
Class Methods – Snaproad & Measurement
| Method | Signature | Description |
|---|---|---|
loadSnaproad | C:loadSnaproad() | Loads snaproad from DrivelineV3 final driveline file. |
getSnaproad | C:getSnaproad() | Returns current snaproad instance. |
measureSelectedPacenote | C:measureSelectedPacenote() | Measures partition and applies measurements to pacenote. |
moveSelectedWaypointForward | C:moveSelectedWaypointForward(steps) | Moves waypoint forward along snaproad. |
moveSelectedWaypointBackward | C:moveSelectedWaypointBackward(steps) | Moves waypoint backward along snaproad. |
Class Methods – Camera & Drawing
| Method | Signature | Description |
|---|---|---|
setOrbitCameraToSelectedPacenote | C:setOrbitCameraToSelectedPacenote() | Sets orbit camera centered on selected pacenote. |
cameraPathPlay | C:cameraPathPlay() | Toggles camera path playback along snaproad. |
cameraPathIsPlaying | C:cameraPathIsPlaying() | Returns true if camera path mode is active. |
drawDebugEntrypoint | C:drawDebugEntrypoint(globalOpacity, dt) | Draws all pacenote debug visualizations. |
placeVehicleAtPacenote | C:placeVehicleAtPacenote() | Teleports player vehicle to selected pacenote position. |
Class Methods – Mouse Interaction
| Method | Signature | Description |
|---|---|---|
handleMouseInput | C:handleMouseInput() | Main mouse handler: gizmo, hover detection, ctrl-create. |
handleMouseDown | C:handleMouseDown(hoveredWp) | Selection logic on click. |
handleMouseHold | C:handleMouseHold() | Simple drag of waypoints along snaproad. |
handleMouseUp | C:handleMouseUp() | Commits drag undo action. |
detectMouseHoverWaypoint | C:detectMouseHoverWaypoint() | Raycast-based hover detection for waypoints. |
Usage Example
local pacenotesTab = require('/lua/ge/extensions/editor/rallyEditor/pacenotes')(rallyEditor)
pacenotesTab:setPath(notebook)
pacenotesTab:selected()
pacenotesTab:draw(mouseInfo)Module Variables
windowDescription(string) - Module variable.windowDescription(string) - Module variable.
Functions
onEditModeActivate()
Callback for edit mode activate event.
Returns: nil
init(rallyEditor)
Initializes the module.
rallyEditor(any)
Returns: self.pacenoteToolsState.snaproad
isValid()
Checks if valid.
Returns: self.pacenoteToolsState.snaproad
onEditModeActivate()
Callback for edit mode activate event.
Returns: nil
onEditModeDeactivate()
Callback for edit mode deactivate event.
Returns: nil
getRacePath()
Returns the race path.
Returns: Snaproad(driveline, styleData, RallyEnums.drivelineMode.rout
unselect()
Handles unselect.
Returns: end
attemptToFixMapEdgeIssue()
Handles attempt to fix map edge issue.
Returns: end
resetGizmoTransformToOrigin()
Handles reset gizmo transform to origin.
Returns: end
updateGizmoTransform(index)
Updates gizmo transform.
index(number)
Returns: end
beginDrag()
Handles begin drag.
Returns: end
dragging()
Handles dragging.
Returns: end
endDragging()
Handles end dragging.
Returns: end
drawDebugCameraPlaying()
Draws debug camera playing.
onPacenoteDrag(pn_sel)
Callback for pacenote drag event.
pn_sel(any)
setHover(wp)
Sets the hover.
wp(any)
Returns: worldEditorCppApi.getAxisGizmoSelectedElement() ~= -1
handleUnmodifiedMouseInteraction(hoveredWp)
Handles handle unmodified mouse interaction.
hoveredWp(any)
Returns: worldEditorCppApi.getAxisGizmoSelectedElement() ~= -1
debugDrawNewPacenote(pos_cs, pos_ce)
Handles debug draw new pacenote.
pos_cs(any)pos_ce(any)
Returns: end
debugDrawNewPacenote2(pos_cs, pos_ce)
Handles debug draw new pacenote2.
pos_cs(any)pos_ce(any)
Returns: end
wpPosForSimpleDrag(wp, mousePos, mouseOffset)
Handles wp pos for simple drag.
wp(any)mousePos(any)mouseOffset(any)
Returns: end
refreshPacenotesTab()
Handles refresh pacenotes tab.
Returns: end
insertMode()
Handles insert mode.
Returns: end
validate()
Handles validate.
Returns: end
drawPacenotesList()
Draws pacenotes list.
Returns: end
searchPacenoteMatchFn(pacenote)
Handles search pacenote match fn.
pacenote(any)
Returns: end
pacenoteSearchMatches(pacenote)
Handles pacenote search matches.
pacenote(any)
Returns: end
insertNewPacenoteAfter(note)
Handles insert new pacenote after.
note(any)
Returns: end
toggleCornerCalls()
Toggles corner calls.
Returns: the result
setModeEditAll()
Sets the mode edit all.
Returns: function(...)
setModeEditCorners()
Sets the mode edit corners.
Returns: o
setupEditMode()
Handles setup edit mode.
Returns: o
generateElevationProfile()
Handles generate elevation profile.
Returns: o
Module Variables
windowDescription(string) - Module variable.windowDescription(string) - Module variable.
Functions
onEditModeActivate()
Callback for edit mode activate event.
Returns: nil
init(rallyEditor)
Initializes the module.
rallyEditor(any)
Returns: self.pacenoteToolsState.snaproad
isValid()
Checks if valid.
Returns: self.pacenoteToolsState.snaproad
onEditModeActivate()
Callback for edit mode activate event.
Returns: nil
onEditModeDeactivate()
Callback for edit mode deactivate event.
Returns: nil
getRacePath()
Returns the race path.
Returns: Snaproad(driveline, styleData, RallyEnums.drivelineMode.rout
unselect()
Handles unselect.
Returns: end
attemptToFixMapEdgeIssue()
Handles attempt to fix map edge issue.
Returns: end
resetGizmoTransformToOrigin()
Handles reset gizmo transform to origin.
Returns: end
updateGizmoTransform(index)
Updates gizmo transform.
index(number)
Returns: end
beginDrag()
Handles begin drag.
Returns: end
dragging()
Handles dragging.
Returns: end
endDragging()
Handles end dragging.
Returns: end
drawDebugCameraPlaying()
Draws debug camera playing.
onPacenoteDrag(pn_sel)
Callback for pacenote drag event.
pn_sel(any)
setHover(wp)
Sets the hover.
wp(any)
Returns: worldEditorCppApi.getAxisGizmoSelectedElement() ~= -1
handleUnmodifiedMouseInteraction(hoveredWp)
Handles handle unmodified mouse interaction.
hoveredWp(any)
Returns: worldEditorCppApi.getAxisGizmoSelectedElement() ~= -1
debugDrawNewPacenote(pos_cs, pos_ce)
Handles debug draw new pacenote.
pos_cs(any)pos_ce(any)
Returns: end
debugDrawNewPacenote2(pos_cs, pos_ce)
Handles debug draw new pacenote2.
pos_cs(any)pos_ce(any)
Returns: end
wpPosForSimpleDrag(wp, mousePos, mouseOffset)
Handles wp pos for simple drag.
wp(any)mousePos(any)mouseOffset(any)
Returns: end
refreshPacenotesTab()
Handles refresh pacenotes tab.
Returns: end
insertMode()
Handles insert mode.
Returns: end
validate()
Handles validate.
Returns: end
drawPacenotesList()
Draws pacenotes list.
Returns: end
searchPacenoteMatchFn(pacenote)
Handles search pacenote match fn.
pacenote(any)
Returns: end
pacenoteSearchMatches(pacenote)
Handles pacenote search matches.
pacenote(any)
Returns: end
insertNewPacenoteAfter(note)
Handles insert new pacenote after.
note(any)
Returns: end
toggleCornerCalls()
Toggles corner calls.
Returns: the result
setModeEditAll()
Sets the mode edit all.
Returns: function(...)
setModeEditCorners()
Sets the mode edit corners.
Returns: o
setupEditMode()
Handles setup edit mode.
Returns: o
generateElevationProfile()
Handles generate elevation profile.
Returns: o
See Also
- Rally Editor - Driveline Tab - Related reference
- Rally Editor - Measurements Tab - Related reference
- Rally Editor – Mission Settings Tab - Related reference
- World Editor Guide - Guide
Rally Editor – Notebook Info Tab
Editor tab for viewing and editing notebook metadata (name, authors, description, audio mode) and managing co-drivers.
Rally Editor – Recce Tab
Editor tab for managing recce recordings: viewing driveline data, importing cuts as pacenotes, and downsampling the recorded driveline.