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()); } }