public override NodeState RunNode(float p_delta)
    {
        Script_IEntity targetEntity = _tree.GetBlackBoardElement <Script_IEntity>(_targetEnemyFlag);

        bool isForwardSwing = _tree.GetBlackBoardElement <bool> (_isForwardSwingFlag);

        if (targetEntity == null || targetEntity.GetGameObject() == null)
        {
            return(NodeState.Failed);
        }

        if (isForwardSwing)
        {
            NodeState success = ForwardSwing(p_delta, _entityToAttack.GetGridLocation(), _entityToAttack, targetEntity);
            if (success == NodeState.Success)
            {
                Script_HealingVisualEffect healingEffect = new Script_HealingVisualEffect(_manager, targetEntity);
                _manager.CreateVisual(healingEffect);
                targetEntity.Heal(_entityToAttack.GetStats()._healPower);
                return(NodeState.Success);
            }
        }
        else if (!isForwardSwing)
        {
            BackSwing(p_delta, _entityToAttack.GetGridLocation(), _entityToAttack, targetEntity);
        }
        return(NodeState.Running);
    }