public void RemoveAgent(BoardAgent agent) { if (agent2cellpos.TryGetValue(agent, out var cellpos)) { cellpos2agents[cellpos].Remove(agent); agent2cellpos.Remove(agent); } agents.Remove(agent); }
public void UpdateAgentCellPos(BoardAgent agent, twin cellpos) { if (agents.Contains(agent)) { if (agent2cellpos.TryGetValue(agent, out var prevpos)) { if (cellpos2agents.ContainsKey(prevpos)) { cellpos2agents[prevpos].Remove(agent); } } agent2cellpos[agent] = cellpos; if (!cellpos2agents.ContainsKey(cellpos)) { cellpos2agents[cellpos] = new HashSet <BoardAgent>(); } cellpos2agents[cellpos].Add(agent); } else { Dj.Warn("UpdateAgentCellPos called on nonadded agent"); } }
public void AddAgent(BoardAgent agent) { agents.Add(agent); UpdateAgentCellPos(agent, agent.my_cell_pos); }