Esempio n. 1
0
        //public string CoverImageUrl { get; set; } To be implemented

        #endregion

        #region Methods
        public SectionNode Section(int index)
        {
            if (index > InnerNodes.Count())
            {
                throw new Exception("Section does not exist");
            }
            else
            {
                return((SectionNode)InnerNodes[index]);
            }
        }
        /* 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);
                }
            }
        }
Esempio n. 3
0
 public void WriteSectionNodes()
 {
     if (InnerNodes != null)
     {
         int listLen = InnerNodes.Count();
         for (int i = 0; i < listLen; i++)
         {
             SectionNode node = (SectionNode)InnerNodes[i];
             if (node.Title == null)
             {
                 writer.WriteComment(" Section ");
             }
             else
             {
                 writer.WriteComment($" Section {i} ");
             }
             node.WriteNode();
         }
     }
 }