/// <summary>
    /// Get the route information from the given station.
    /// </summary>
    /// <param name="station">Station from where the information is requested.</param>
    /// <returns>StageInfo object with the information from the given station.</returns>
    internal StageInfo GetRouteInfoFrom(StationController station)
    {
        int stationIndex = itinerary.FindStopIndex(station);

        if (stationIndex < itinerary.StageInfos.Count)
        {
            return(itinerary.StageInfos[stationIndex]);
        }
        else
        {
            return(null);
        }
    }
    /// <summary>
    /// When the traveler arrived to the station,
    /// it has to decide how to get to the next waypoint or its final destination.
    /// </summary>
    /// <param name="station"></param>
    public virtual void ArrivedAt(StationController station)
    {
        wayPointIndex = itinerary.FindStopIndex(station);
        SetAnimation(false);

        startPosition = station.transform.position;

        CheckInfo();

        if (wayPointIndex < itinerary.StageInfos.Count)
        {
            var info = itinerary.StageInfos[wayPointIndex];
            //Debug.Log(info);
            if (info.Category == LineCategory.Walk)
            {
                ++wayPointIndex;
                startTime     = Time.time;
                journeyLength = Vector3.Distance(startPosition, CurrentDestination());
                SetAnimation(true);
                return;
            }
        }
        else
        {
            // The last part of walking!
            SetAnimation(true);
            return;
        }

        CurrentStop().QueueTraveler(this);
    }