public override void Execute()
    {
        if (endedInstruction)
        {
            DialogueDatabase.activeGraphPlayer.ReturnCharacterPool(character);
            DialogueDatabase.activeGraphPlayer.ChangeNode(output.outputNode);
            return;
        }

        if (_inAction)
        {
            return;
        }

        if (!DialogueDatabase.activeGraphPlayer.CharactersInScene.ContainsKey(character))
        {
            endedInstruction = true;
            Debug.LogWarning($"The character {character.name} is not in the scene");
            return;
        }

        Image charaImg = DialogueDatabase.activeGraphPlayer.CharactersInScene[character];
        var   position = charaImg.rectTransform.anchoredPosition;

        switch (transition)
        {
        case EnumCharacterTransition.Instante:
            ParadoxCharacterTransition.Instante(charaImg, sprite, EnumPosition.Custom, this, charaImg.rectTransform.anchoredPosition, true);
            break;

        case EnumCharacterTransition.Fade:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.Fade(charaImg, sprite, EnumPosition.Custom, this, position, timeDuration, true));
            break;

        case EnumCharacterTransition.Slide_Down:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideUp(charaImg, sprite, EnumPosition.Custom, this, position, timeDuration, true));
            break;

        case EnumCharacterTransition.Slide_Up:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideDown(charaImg, sprite, EnumPosition.Custom, this, position, timeDuration, true));
            break;

        case EnumCharacterTransition.Slide_Left:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideRight(charaImg, sprite, EnumPosition.Custom, this, position, timeDuration, true));
            break;

        case EnumCharacterTransition.Slide_Right:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideLeft(charaImg, sprite, EnumPosition.Custom, this, position, timeDuration, true));
            break;
        }

        _inAction = true;
    }
    public override void Execute()
    {
        if (endedInstruction)
        {
            DialogueDatabase.activeGraphPlayer.ChangeNode(output.outputNode);
            return;
        }

        if (_inAction)
        {
            return;
        }

        if (DialogueDatabase.activeGraphPlayer.CharactersInScene.ContainsKey(character))
        {
            endedInstruction = true;
            Debug.LogWarning($"The character {character.name} is already in the scene");
            return;
        }

        Image charaImg = DialogueDatabase.activeGraphPlayer.TakeCharacterPool(character);

        charaImg.CrossFadeAlpha(1, 0, false);

        switch (transition)
        {
        case EnumCharacterTransition.Instante:
            ParadoxCharacterTransition.Instante(charaImg, sprite, position, this, customPoint);
            break;

        case EnumCharacterTransition.Fade:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.Fade(charaImg, sprite, position, this, customPoint, timeDuration));
            break;

        case EnumCharacterTransition.Slide_Up:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideUp(charaImg, sprite, position, this, customPoint, timeDuration));
            break;

        case EnumCharacterTransition.Slide_Down:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideDown(charaImg, sprite, position, this, customPoint, timeDuration));
            break;

        case EnumCharacterTransition.Slide_Right:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideRight(charaImg, sprite, position, this, customPoint, timeDuration));
            break;

        case EnumCharacterTransition.Slide_Left:
            DialogueDatabase.activeGraphPlayer.StartCoroutine(ParadoxCharacterTransition.SlideLeft(charaImg, sprite, position, this, customPoint, timeDuration));
            break;
        }

        _inAction = true;
    }