public void AddTransitions(LaneTransitionData[] transitionsToAdd)
        {
            if (transitions == null)
            {
                transitions = transitionsToAdd;
                routed      = true;
                return;
            }

            LaneTransitionData[] newTransitions = new LaneTransitionData[transitions.Length + transitionsToAdd.Length];
            Array.Copy(transitions, newTransitions, transitions.Length);
            Array.Copy(transitionsToAdd, 0, newTransitions, transitions.Length, transitionsToAdd.Length);
            transitions = newTransitions;

            routed = true;
        }
        public void RemoveTransition(uint laneId)
        {
            if (transitions == null)
            {
                return;
            }

            int index = -1;

            for (int i = 0; i < transitions.Length; ++i)
            {
                if (transitions[i].laneId == laneId)
                {
                    index = i;
                    break;
                }
            }

            if (index < 0)
            {
                return;
            }

            if (transitions.Length == 1)
            {
                Reset();
                return;
            }

            LaneTransitionData[] newTransitions = new LaneTransitionData[transitions.Length - 1];
            if (index > 0)
            {
                Array.Copy(transitions, 0, newTransitions, 0, index);
            }
            if (index < transitions.Length - 1)
            {
                Array.Copy(transitions, index + 1, newTransitions, index, transitions.Length - index - 1);
            }
            transitions = newTransitions;
        }
 public void AddTransition(LaneTransitionData transition)
 {
     AddTransitions(new LaneTransitionData[1] {
         transition
     });
 }