void Start() { fighterTeams = new Dictionary <int, List <GameObject> >(); averagePosition = Vector3.zero; // Ship tracker for global access m_countShips.BUpdate = () => { averagePosition = Vector3.zero; for (int i = 1; i <= fighterTeams.Keys.Count; i++) { fighterTeams[i].Clear(); } foreach (GameObject fighter in GameObject.FindGameObjectsWithTag("Fighter")) { if (fighter.GetComponent <Fighter>().isExploding) { GameObject explosion = (GameObject)Instantiate(m_explosion, fighter.transform.position, fighter.transform.rotation); if (m_spaceManager != null) { m_spaceManager.AddShockwave(explosion); } explosion.GetComponent <Rigidbody>().velocity = fighter.GetComponent <Rigidbody>().velocity; Destroy(explosion, 2f); Destroy(fighter); // Debug.Log("Trigger explosion."); } else { if (fighter.GetComponent <Fighter>()) { fighterTeams[fighter.GetComponent <Fighter>().teamNumber].Add(fighter); } averagePosition += fighter.transform.position; } averagePosition /= (fighterTeams[1].Count + fighterTeams[2].Count); } //try that freaky camera shit while we are at it return(BHStatus.Success); }; m_countShips = new Regulator(m_countShips, 0.1f); // ship management runs only 10 times per second }