//	public void dead()
//	{
//		needToSetDead = true;
//	}

    public virtual void dead(bool useSound = true)
    {
        if (UIPopupSkillPreview.isOpen)
        {
            hp = 1000;
            return;
        }

        if (monsterDeadCallback != null)
        {
            monsterDeadCallback(stat.uniqueId);
            monsterDeadCallback = null;
        }

        if (shadow != null)
        {
            shadow.renderer.enabled = false;
        }

        _isEnabled.Set(false);
        isFreeze.Set(true);

        if (hpBar != null)
        {
            hpBar.visible = false;
        }

        removeAttacker();
        removeTarget();

        switch (category)
        {
//		case MonsterCategory.Category.HEROMONSTER:
//			if(GameManager.me.stageManager.clearChecker(ClearChecker.CHECK_IMMEDIATELY, this)) return;
//			break;

        case MonsterCategory.Category.UNIT:

            if (aiUnitSlot != null)
            {
                aiUnitSlot.deadCreatedMonster();
            }
            else if (monsterUISlotIndex > -1)
            {
                UIPlay.getUnitSlot(monsterUISlotIndex).deadCreatedMonster();
            }

//			if(isPlayerSide == false)
//			{
//				if(GameManager.me.stageManager.clearChecker(ClearChecker.CHECK_IMMEDIATELY, this)) return;
//			}
            break;
        }


        if (string.IsNullOrEmpty(monsterData.explosionEffect) == false)
        {
            if (GameManager.info.effectData.ContainsKey(monsterData.explosionEffect))
            {
                _v    = cTransformPosition;
                _v.z -= 5.0f;
                GameManager.info.effectData[monsterData.explosionEffect].getEffect(attackerUniqueId, _v);
            }
        }

        _v   = cTransformPosition;
        _v.y = bodyYCenter;


        characterEffect.clear();

        clearAnimationMethod();

        if (useSound)
        {
            SoundData.playDieSound(resourceId);
        }

        setVisibleForSkillCam(true, 1.0f);

        setColor(_normalColor);

        if (monsterUISlotIndex > -1)
        {
            UIPlay.getUnitSlot(monsterUISlotIndex).spDamageEffect.cachedGameObject.SetActive(false);
        }

        state = Monster.DEAD;

        if (action != null)
        {
            action.dead();
        }
    }