API ReferenceGE ExtensionseditordragRaceEditor
Drag Race Editor - Utils
Utility functions for the drag race editor: error display, undo/redo stack, data validation, lane creation, mouse info tracking, and transform setup.
Utility functions for the drag race editor: error display, undo/redo stack, data validation, lane creation, mouse info tracking, and transform setup.
Public API
| Function | Signature | Description |
|---|---|---|
M.logError | (message) | Sets error state and logs error |
M.showError | () | Displays timed error text in ImGui |
M.markUnsavedChanges | () | Sets unsaved changes flag in state |
M.clearUnsavedChanges | () | Clears unsaved changes flag |
M.saveToUndoStack | () | Deep copies current data to undo stack, clears redo |
M.undo | () | Pops undo stack, pushes current to redo |
M.redo | () | Pops redo stack, pushes current to undo |
M.validateDragRaceData | (data) → bool, string | Validates drag race data format and required fields |
M.createNewLane | (laneIndex) → table | Creates default lane with stage + endLine waypoints and boundary |
M.createNewDragRaceData | () → table | Creates blank drag race config with phases and prefabs |
M.reorderLanes | (t, old, new) | Moves element in array from old to new index |
M.updateMouseInfo | () | Updates mouse raycasting info (position, click, hold, release) |
M.setupTransform | (label, transform, allowT, allowR, allowS) → transformUtil | Creates a transformUtil instance from position/rotation/scale table |
Validation
local valid, err = utils.validateDragRaceData(data)
-- Supports both modular format (facilityId + stripId) and legacy format (strip.lanes)
-- Returns false with reason string if invalidMouse Info Structure
-- After updateMouseInfo():
mouseInfo = {
camPos = vec3, -- camera position
ray = ray, -- camera mouse ray
rayDir = vec3, -- ray direction
rayCast = result, -- raycast hit result
valid = bool, -- whether raycast hit
down = bool, -- mouse just clicked (LMB, not over ImGui)
hold = bool, -- mouse held
up = bool, -- mouse just released
_downPos = vec3, -- world position at click
_holdPos = vec3, -- world position while held
_upPos = vec3, -- world position at release
}Default Drag Race Data
local data = utils.createNewDragRaceData()
-- data.dragType = "headsUpRace"
-- data.phases = { {name="stage"}, {name="countdown"}, {name="race"}, {name="stop"} }
-- data.prefabs = { christmasTree, displaySign, paths, decorations }Dependencies
| Module | Purpose |
|---|---|
editor/dragRaceEditor/constants | Default transform, error colors |
editor/dragRaceEditor/state | Shared state (undo/redo stacks, mouse info, drag data) |
editor/util/transformUtil | Transform editing utility |
ui_imgui | ImGui for error display |
See Also
- Drag Race Editor Constants - Related reference
- Drag Race Editor - Drag Settings - Related reference
- Drag Race Editor - Facilities - Related reference
- World Editor Guide - Guide
Drag Race Editor - Strips
Manages drag racing strip data: loading, selecting, adding, removing, saving, and editing strips with lanes, waypoints, and boundaries. Provides ImGui UI for strip/lane/waypoint/boundary selection and
Drag Race Editor - Waypoints
Manages standalone drag race waypoint data: loading, selecting, adding (spawn/stage/endLine), removing, saving, and ImGui UI for waypoint editing with transform gizmos and world-space preview.