/// <summary>
        /// Tries updating the road type of given road based on forward Shift,
        /// keeping in account the road count of the track playing
        /// </summary>
        /// <param name="shiftedRoad"></param>
        private void UpdateShiftedRoadType(Road shiftingRoad, bool forwardShift, bool onExit)
        {
            //if the road was shifted on exit, the offset is smaller than if it was on entering
            int offset = onExit ? 1 : 2;
            //index of the type for shifting road is either 2 indexes ahead or behind, based on forwardshift or not
            int newShiftingRoadTypeIndex = forwardShift ? trackIndexOn + offset : trackIndexOn - offset;

            shiftingRoad.SetupRoad(trackPlaying.RoadTypes, newShiftingRoadTypeIndex);
        }
        /// <summary>
        /// Sets up values related to the track and road
        /// </summary>
        private void SetupRoadValues()
        {
            raceTrackDict = new Dictionary <string, RaceTrack>();
            foreach (RaceTrack track in tracks)
            {
                raceTrackDict.Add(track.Name, track);
            }

            for (int i = 0; i < tracks.Length; i++)
            {
                tracks[i].CheckMaxRoadTypes();
                tracks[i].CheckForStartAndEnd();
            }

            trackPlaying = raceTrackDict[InRoomManager.Instance.NameOfTrackChoosen];
            roadOn       = roads[2];
            roadOn.SetupRoad(trackPlaying.RoadTypes, trackIndexOn);
            roads[1].SetupRoad(trackPlaying.RoadTypes, trackIndexOn + 1);
            roads[0].SetupRoad(trackPlaying.RoadTypes, trackIndexOn + 2);
            roadLength = roadOn.MainBounds.size.y;
        }
        private void Testing()
        {
            raceTrackDict = new Dictionary <string, RaceTrack>();
            foreach (RaceTrack track in tracks)
            {
                raceTrackDict.Add(track.Name, track);
            }

            for (int i = 0; i < tracks.Length; i++)
            {
                tracks[i].CheckMaxRoadTypes();
                tracks[i].CheckForStartAndEnd();
            }

            GameObject.Find("Car").GetComponent <Racer>().OnRoadBoundInteraction += DoRoadShift;
            trackPlaying = raceTrackDict["Default"];
            //set other roads their type based on next road types to come
            roadOn = roads[2];
            roadOn.SetupRoad(trackPlaying.RoadTypes, trackIndexOn);
            roads[1].SetupRoad(trackPlaying.RoadTypes, 1);
            roads[0].SetupRoad(trackPlaying.RoadTypes, 2);
            roadLength = roadOn.MainBounds.size.y;
        }