// Event where agent shares a seen agent public void SeenAgent(OtherAgent oa) { TimesSeenOtherAgents.Add(oa); if (!SharedSeenOtherAgents.ContainsKey(oa.Name)) { SharedSeenOtherAgents.Add(oa.Name, oa); } else { SharedSeenOtherAgents[oa.Name] = oa; } }
// Event where agent no longer sees agent public void UnseenAgent(OtherAgent oa) { int index = TimesSeenOtherAgents.FindLastIndex(x => x == oa); if (index != -1) { TimesSeenOtherAgents.RemoveAt(index); } if (!TimesSeenOtherAgents.Contains(oa)) { SharedSeenOtherAgents.Remove(oa.Name); } }
void Update() { var agentsToRemove = new List <string>(); foreach (KeyValuePair <string, OtherAgent> a in SharedSeenOtherAgents) { if (!LevelManager.Instance.Agents.Exists(x => x.name == a.Key)) { agentsToRemove.Add(a.Key); } } foreach (string s in agentsToRemove) { SharedSeenOtherAgents.Remove(s); } }