public void ClearNodes() { m_nodes.Clear(); RiderRouteNode newNode = new RiderRouteNode(); newNode.x = (int)transform.position.x; newNode.y = (int)transform.position.z; m_nodes.Add(newNode); }
public void AddNode(int x, int y) { // Handle backing out a node if (m_nodes.Count > 2) { if (m_nodes[m_nodes.Count - 2].x == x && m_nodes[m_nodes.Count - 2].y == y) { m_nodes.RemoveAt(m_nodes.Count - 1); } } // Don't allow more nodes than the limit if (m_nodes.Count >= m_nodeLimit) { return; } // Dont allow entering a cell that another team-mate is also entering // Don't allow jumping more than one node in any direction at a time if (m_nodes.Count > 1) { int lastX = m_nodes[m_nodes.Count - 1].x; int lastY = m_nodes[m_nodes.Count - 1].y; if (Mathf.Abs(x - lastX) > 1 || Mathf.Abs(y - lastY) > 1) { return; } } if (m_nodes.Any(node => node.x == x && node.y == y)) { return; } RiderRouteNode newNode = new RiderRouteNode(); newNode.x = x; newNode.y = y; m_nodes.Add(newNode); }