private void OnTriggerEnter(Collider agent) { agentState = agent.GetComponent <CollisionSensorState>(); // update agent's state and entire agents' list information if (agent.tag == "Observer") { collisionSignal = true; agents.Add(agent); agentsInfo.Add(agentState); } }
private void OnTriggerExit(Collider agent) { agentState = agent.GetComponent <CollisionSensorState>(); if (agent.tag == "Observer") { agents.Remove(agent); agentsInfo.Remove(agentState); collisionSignal = false; collisionTime = 0; gameObject.GetComponentInParent <RescuerObserver>().highPriority = false; } }
private void GetUnionList(CollisionSensorState currentAgent) { Queue <CollisionSensorState> tmpQueue = new Queue <CollisionSensorState>(); CollisionList = new List <CollisionSensorState>(); tmpQueue.Enqueue(currentAgent); while (tmpQueue.Count > 0) { CollisionSensorState agent = tmpQueue.Dequeue(); foreach (var item in agent.GetComponent <Sensor>().agentsInfo) { if (!CollisionList.Contains(item)) { CollisionList.Add(item); tmpQueue.Enqueue(item); } } } }