/* Depth-first search */
        private void DFS(ushort node)
        {
            noInfiniteRecursion++;
            if (noInfiniteRecursion > RECURSION_TRESHOLD)
            {
                UI.UIWindow.instance.ThrowErrorMsg("Error: DFS method exeeded max recursion limit");
                OuterNodes = OuterSegments = InnerNodes = InnerSegments = new List <ushort>();
                return;
            }
            visitedNodes.Add(node);
            InnerNodes.Add(node);
            NetNode netNode = GetNode(node);

            for (int i = 0; i < MAX_SEGMENTS_PER_NODE; i++)
            {
                //Debug.Log(string.Format("NodeID: {0}; segment no. {1}...",node,i));
                ushort segment = netNode.GetSegment(i);
                //Debug.Log(string.Format("ID of that segment is {0}", segment));
                if (!segmentExists(segment))
                {
                    continue;
                }

                NetSegment curSegment = GetSegment(segment);
                ushort     newNode    = getOtherNode(node, segment);

                if (isVisited(newNode))
                {
                    continue;
                }

                NetNode newNetNode = GetNode(newNode);
                visitedNodes.Add(newNode);

                /* Checking, whether the node is inside the roundabout or not. If not, it is added to the edge nodes and the search ends there. */
                if (!Ellipse.IsInsideEllipse(newNetNode.m_position))
                {
                    OuterNodes.Add(newNode);
                    OuterSegments.Add(segment);
                }
                else
                {
                    InnerNodes.Add(newNode);
                    InnerSegments.Add(segment);
                    DFS(newNode);
                }
            }
        }