void SetSegments(ushort segmentId, ushort infoIndex, ref Segment previousSeg)
{
NetSegment segment = NetManager.instance.m_segments.m_buffer[segmentId];
if (segment.m_infoIndex != infoIndex || m_segments.ContainsKey(segmentId))
return;
Segment seg = default(Segment);
seg.m_segmentId = segmentId;
NetSegment previousSegment = NetManager.instance.m_segments.m_buffer[previousSeg.m_segmentId];
ushort nextNode;
if ((segment.m_startNode == previousSegment.m_endNode) || (segment.m_startNode == previousSegment.m_startNode))
{
nextNode = segment.m_endNode;
seg.m_targetNode = segment.m_startNode == previousSeg.m_targetNode ? segment.m_endNode : segment.m_startNode;
}
else
{
nextNode = segment.m_startNode;
seg.m_targetNode = segment.m_endNode == previousSeg.m_targetNode ? segment.m_startNode : segment.m_endNode;
}
m_segments[segmentId] = seg;
NetNode node = NetManager.instance.m_nodes.m_buffer[nextNode];
if (node.CountSegments() == 2)
SetSegments(node.m_segment0 == segmentId ? node.m_segment1 : node.m_segment0, infoIndex, ref seg);
}