private IEnumerator DrawingAnimation()
    {
        ConvexHullNode currentPotentialNode = _currentNodes[_currentIndex];

        for (int j = 0; j < _currentNodes.Count; j++)
        {
            Vector3 distancePotentialToLeftNode = currentPotentialNode.GetPosition() - _currentLeftestNode.GetPosition();
            Vector3 distanceCurrentToLeftNode   = _currentNodes[j].GetPosition() - _currentLeftestNode.GetPosition();

            float _currentCrossValue = GetCrossVectorY(distancePotentialToLeftNode.normalized, distanceCurrentToLeftNode.normalized);

            if (_currentCrossValue <= 0f)
            {
                continue;
            }

            yield return(new WaitForSeconds(_waitForSecondDelay));

            _currentLeftestNode.SetLinePosition(_currentNodes[j].GetPosition());

            currentPotentialNode = _currentNodes[j];
        }

        SetNextLeftestNode(currentPotentialNode);
    }
    private void SetNextLeftestNode(ConvexHullNode chosenNode)
    {
        _currentDrawingCoroutine = null;

        _currentLeftestNode.SetLinePosition(chosenNode.GetPosition());
        _currentLeftestNode.SetComplete();

        if (chosenNode.IsComplete())
        {
            _currentLeftestNode.SetLinePosition(_currentNodes[0].GetPosition());

            EndAnimation();
        }
        else
        {
            _currentIndex++;

            _currentLeftestNode = chosenNode;

            _currentDrawingCoroutine = StartCoroutine(DrawingAnimation());
        }
    }