Common tasks

This page uses GameObject from Unity. The glossary says what each one is.

List every train on the track.

foreach (TrackTrainInfo train in Trains.All())
    Log.Info(train.Id + ": " + train.WagonType + " at speed " + train.Speed);

Send every switch that points at branch 0 down branch 1 instead. The call is refused when a train is on the switch’s track.

foreach (UnityEngine.GameObject sw in Trains.Switches)
{
    if (Trains.GetBranch(sw) == 0) Trains.SetBranch(sw, 1, force: false);
}

Turn every wagon loader on.

foreach (UnityEngine.GameObject loader in Trains.Loaders)
    Trains.SetLoaderOn(loader, true);

List the pieces of track that a train is on.

foreach (TrackSegmentInfo segment in Trains.Segments())
    if (segment.Occupied) Log.Info("Track " + segment.Id + " is taken by train " + segment.OccupiedBy);