예제 #1
0
 public void ProcessSegment(ushort segmentId, NetSegmentHandler handler)
 {
     ProcessSegment(
         segmentId,
         ref Singleton <NetManager> .instance.m_segments.m_buffer[segmentId],
         handler);
 }
        public void IterateNodeSegments(ushort nodeId, ClockDirection dir, NetSegmentHandler handler)
        {
            NetManager netManager = Singleton <NetManager> .instance;

            ProcessNode(nodeId, delegate(ushort nId, ref NetNode node) {
                if (dir == ClockDirection.None)
                {
                    for (int i = 0; i < 8; ++i)
                    {
                        ushort segmentId = node.GetSegment(i);
                        if (segmentId != 0)
                        {
                            if (!handler(segmentId, ref netManager.m_segments.m_buffer[segmentId]))
                            {
                                break;
                            }
                        }
                    }
                }
                else
                {
                    ushort segmentId = node.GetSegment(0);
                    ushort initSegId = segmentId;

                    while (true)
                    {
                        if (segmentId != 0)
                        {
                            if (!handler(segmentId, ref netManager.m_segments.m_buffer[segmentId]))
                            {
                                break;
                            }
                        }

                        switch (dir)
                        {
                        case ClockDirection.Clockwise:
                        default:
                            segmentId = netManager.m_segments.m_buffer[segmentId].GetLeftSegment(nodeId);
                            break;

                        case ClockDirection.CounterClockwise:
                            segmentId = netManager.m_segments.m_buffer[segmentId].GetRightSegment(nodeId);
                            break;
                        }

                        if (segmentId == initSegId || segmentId == 0)
                        {
                            break;
                        }
                    }
                }
                return(true);
            });
        }
 public void IterateNodeSegments(ushort nodeId, NetSegmentHandler handler)
 {
     IterateNodeSegments(nodeId, ClockDirection.None, handler);
 }
 public void ProcessSegment(ushort segmentId, ref NetSegment segment, NetSegmentHandler handler)
 {
     handler(segmentId, ref segment);
 }