// Sends periodic updates of the current navigation state
    void Update()
    {
        if (destination == null || _NavMeshAgent == null || isPaused == true)
        {
            return;
        }

        var nextFloorPath   = GetPathToNextFloor();
        var currentDistance = GetPathDistance(GetTotalPath());

        _NavigationPresenter.UpdateNavigationInformation(currentDistance, nextFloorPath);

        /**
         * Due to a bug, the first frame of changing the destination will no calculate the correct distance
         * NavMesh will calculate a path after the first update, which means that the first update will result in a 0 distance
         * Using the unity distance will avoid that behavior
         */
        if (GetUnityDistanceToUser(destination) < _goalReachedDistance)
        {
            StopNavigation();
        }
        ProcessCurrentArea();
    }