Exemplo n.º 1
0
    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
    }