public int m_poolAmount = 20;//amount of each type of explosion

    // Use this for initialization
    void Start()
    {
        //object pooling
        m_player = GameObject.FindObjectOfType <Player>();
        m_camera = GameObject.FindObjectOfType <IsoCam>();

        for (int numType = 0; numType < m_explosionPrefabs.Length; ++numType)
        {
            List <ExplosionItem> explosionType = new List <ExplosionItem>();
            for (uint i = 0; i < m_poolAmount; ++i)
            {
                if (m_explosionPrefabs[numType] != null)
                {
                    ExplosionItem newExplosion = new ExplosionItem();
                    newExplosion.m_object = (GameObject)Instantiate(m_explosionPrefabs[numType], this.transform);
                    Explosion explosionScript = newExplosion.m_object.GetComponent <Explosion>();
                    if (explosionScript != null)
                    {
                        newExplosion.m_shockWaveStrength = explosionScript.m_shockWaveStrength;
                        newExplosion.m_type = explosionScript.m_type;
                    }
                    newExplosion.m_object.SetActive(false);
                    explosionType.Add(newExplosion);
                }
            }


            m_explosionPool.Add(explosionType);
        }
    }
    public static void Explode(string name, Vector3 position)
    {
        if (!instance)
        {
            return;
        }

        ExplosionItem explosion = instance.explosions.Find(x => x.name == name);

        if (explosion != null)
        {
            GameObject obj = Instantiate(explosion.explosion, position, Quaternion.identity);
            Destroy(obj, explosion.timer);
        }
    }