Skip to content

Troubleshooting

Create menu items not showing (e.g. Track Markers)

If you can't find Create → Race Timing → Track Markers:

  1. Fix any Console compile errors first.
  2. Assets → Reimport All
  3. 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.RowPrefab is not assigned
  • RaceTowerUI.Container is not assigned
  • RaceTimingManager is missing or the session has not started
  • No RaceCompetitor objects are in the scene (rows are created per competitor)

See: UI Setup: RaceTowerUI


Waypoints not visible

  • Ensure the TrackMarkers GameObject is selected in the Hierarchy.
  • Check that the TrackMarkersSO has 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.