Troubleshooting
Create menu items not showing (e.g. Track Markers)
If you can't find Create → Race Timing → Track Markers:
- Fix any Console compile errors first.
- Assets → Reimport All
- If that doesn't work, close Unity, delete the
Library/folder, and reopen.
Can't add waypoints
Check:
- Is the TrackMarkers GameObject selected?
- Does it have a TrackMarkerManagerBehaviour component?
- Is a TrackMarkersSO assigned to it?
- Are you holding Shift while clicking in the Scene View?
- Does your scene have colliders or terrain for raycasts to hit?
Race Tower UI not showing
RaceTowerUI.RowPrefabis not assignedRaceTowerUI.Containeris not assignedRaceTimingManageris missing or the session has not started- No
RaceCompetitorobjects are in the scene (rows are created per competitor)
Waypoints not visible
- Ensure the
TrackMarkersGameObject is selected in the Hierarchy. - Check that the
TrackMarkersSOhas markers in its list. - The Scene View must be active (not Game View).
No toast notifications
See the setup guide: - UI Setup: Toast Notifications
RaceToastBridge requires:
- A SiroccoToast.ToastManager in the scene
- A RaceTimingManager in the scene
Check Console for:
- [RaceToastBridge] No ToastManager found...
- [RaceToastBridge] No RaceTimingManager found...
Gaps show as "---"
Drivers that have not yet crossed the start line show --- — this is expected. If all drivers show --- throughout:
- Check that your track loop is correct (cars should wrap from ratio ~1 back to ~0).
- Check that RaceTimingManager is finding the TrackMarkerManagerBehaviour and has a non-zero LapTimer.TrackLength.
Track editor performance
The track marker system handles typical race tracks without issues. If you have a very high marker count (hundreds+), consider reducing density.
Penalties not affecting standings
The default ranking strategy (StandardRaceRanking) does not account for penalties. To enable penalty-aware rankings, set the strategy explicitly:
var rd = RaceTimingManager.Instance.LapTimer.RaceDirector;
rd.SetRankingStrategy(new PenaltyAwareStandardRaceRanking(rd.PenaltyManager));
See the Penalties System guide for details.
See the Penalties System guide for details.
Invalidated lap still showing as best lap
The Race Tower uses GetBestValidLap() automatically. If you wrote custom UI code, update it to use ILapInvalidationManager.GetBestValidLap().
Can't revalidate a lap
Laps auto-invalidated by the system (e.g., incomplete sector data) cannot be revalidated. Only manually invalidated laps support revalidation. Check lap.IsAutoInvalidated.
Penalty events not firing
Subscribe in Start(), not Awake(). The RaceTimingManager must initialize before you subscribe:
void Start() {
var pm = RaceTimingManager.Instance.LapTimer.RaceDirector.PenaltyManager;
pm.OnTimePenaltyIssued += HandlePenalty;
}
InvalidateCurrentLap flag persists after lap
This flag should auto-clear when the lap completes. If it persists, check your Sirocco Race Timing version or file a bug report.