internal virtual void GoBoom()
    {
        if (spriteRend.isVisible)
        {
            Camera2DFollow.followControl.Shake(0.2f, 0.2f);
        }
        // Instantiate a clone of the source so that multiple explosions can play at the same time.
        spriteRend.enabled = false;
        try
        {
            registerTile.Unregister();

            PushPull oA = gameObject.GetComponent <PushPull>();
            if (oA != null)
            {
                if (oA.pusher == PlayerManager.LocalPlayer)
                {
                    PlayerManager.LocalPlayerScript.playerMove.IsPushing = false;
                }
                oA.isPushable = false;
            }
        }
        catch
        {
            Logger.LogWarning("Object may of already been removed", Category.Health);
        }

        foreach (Collider2D collider2d in gameObject.GetComponents <Collider2D>())
        {
            collider2d.enabled = false;
        }

        string      name   = explosions[Random.Range(0, explosions.Length)];
        AudioSource source = SoundManager.Instance[name];

        if (source != null)
        {
            Instantiate(source, transform.position, Quaternion.identity).Play();
        }

        GameObject fireRing = Resources.Load <GameObject>("effects/FireRing");

        Instantiate(fireRing, transform.position, Quaternion.identity);

        GameObject lightFx = Resources.Load <GameObject>("lighting/BoomLight");

        lightFxInstance = Instantiate(lightFx, transform.position, Quaternion.identity);
        lightSprite     = lightFxInstance.GetComponentInChildren <LightSprite>();
        lightSprite.fadeFX(1f);
        SetFire();
    }
    internal virtual void GoBoom()
    {
        if (spriteRend.isVisible)
        {
            Camera2DFollow.followControl.Shake(0.2f, 0.2f);
        }
        // Instantiate a clone of the source so that multiple explosions can play at the same time.
        spriteRend.enabled = false;
        try{
            Matrix.Matrix.At(transform.position).TryRemoveTile(gameObject);
            ObjectActions oA = gameObject.GetComponent <ObjectActions>();
            if (oA != null)
            {
                if (oA.pusher == PlayerManager.LocalPlayer)
                {
                    PlayerManager.LocalPlayerScript.playerMove.isPushing = false;
                }
                oA.isPushable = false;
            }
        } catch {
            Debug.LogWarning("Object may of already been removed");
        }
        Collider2D[] getColls = gameObject.GetComponents <Collider2D>();
        for (int i = 0; i < getColls.Length; i++)
        {
            getColls[i].enabled = false;
        }
        var name   = explosions[Random.Range(0, explosions.Length)];
        var source = SoundManager.Instance[name];

        if (source != null)
        {
            Instantiate <AudioSource>(source, transform.position, Quaternion.identity).Play();
        }

        var fireRing = Resources.Load <GameObject>("effects/FireRing");

        Instantiate(fireRing, transform.position, Quaternion.identity);

        var lightFx = Resources.Load <GameObject>("lighting/BoomLight");

        lightFxInstance = Instantiate(lightFx, transform.position, Quaternion.identity);
        lightSprite     = lightFxInstance.GetComponentInChildren <LightSprite>();
        lightSprite.fadeFX(1f);
        SetFire();
    }