public TrafficRule GetRule(Unit unit) { if (unit.x < 0 || unit.y < 0 || unit.y >= m_length) { return TrafficRule.Stop; } Vector2 pos = unit.toVector2() + m_coord; if (m_list.ContainsKey(unit.x)) { var line = m_list[unit.x]; return line.GetRule(pos.x, pos.y); } else { return TrafficRule.Stop; } }
public void SetRule(Unit unit, TrafficRule rule) { if (unit.x < 0 || unit.y < 0 || unit.y >= m_length) { return; } Vector2 pos = unit.toVector2() + m_coord; if (m_list.ContainsKey(unit.x)) { var line = m_list[unit.x]; line.SetRule(pos.x, pos.y, rule); } else { var line = new TrafficRuleLine(pos.x, m_coord.y, m_length, m_arrow, m_parent); line.SetRule(pos.x, pos.y, rule); line.ShowArrows(m_visible); m_list[unit.x] = line; } }