Сессия навигации – ARNavigationSession
ARNavigationSession регистрирует события сессии навигации. Представляет собой Singleton, поддерживает обращения через ARNavigationSession.Instance. Список доступных для подписки события и какие функции к ним привязаны:
OnPathCreated – путь от текущего местоположения пользователя к выбранной точке назначения построен успешно
OnPathFindingFailed – не удалось построить маршрут от текущего местоположения пользователя к выбранной точке назначения
- OnPathFindingFailed в ScanState; вызов
OnCancelCallback
, поведение по умолчанию: переход на стейт выбора точки назначения - OnPathfindingFailedHandler в WalkToState; вызов
OnPathFindingFailCallback
, поведение по умолчанию: переход на стейт локализации
OnPathDeleted – текущий путь был удалён
OnTrackingLost – потеря трекинга (возникает в большинстве случаев при потере фокуса)
- OnTrackingLostHandler в AppRouter; возврат на стейт выбора здания, а если имеется построенные путь – предложение перестроить его для продолжения маршрута
OnPointReached – точка назначения достигнута, содержит в аргументах PlanPoint – точка назначения
- OnPointReachedHandler в WalkToState; вызов
OnPointReachedCallback
, поведение по умолчанию: переход на стейт достижения точки назначения.
OnProgressUpdated – обновления прогресса пути до точки назначения, первый аргумент – пройденный прогресс в процентах, второй аргумент – пройденная дистанция в метрах
- OnProgressUpdated в WalkToState; обновление шкалы прогресса пути и кол-ва метров до точки назначения
OnCorrectVpsAngle – положение телефона удовлетворяет условиям работы VPS (запросы не отправляются при сильном наклоне камеры вверх или вниз, см. VPS)
OnVpsRequestSuccess – локализация прошла успешно
- OnLocalized в ScanState; отображение анимации успешной локализации
OnVpsRequestFailed – локализация не удалась
- сейчас не используется; может быть использован для сообщения пользователю о неуспешной локализации. Обратите внимание, что с текущим протоколом VPS первая отправка запроса всегда возвращается с фейлом (см. документацию к VPS)
Помимо регистрации события, ARNavigationSession отвечает за:
- корректировку пути, если пользователь сходит с маршрута
- достижение точки назначения, когда пользователь подходит к ней на заданное расстояние
А также позволяет получить текущую позицию пользователя через публичную функцию GetCurrentPlayerPosition():
public Vector3 GetCurrentPlayerPosition() // возвращает текущую позицию
// пользователя согласно данным трекинга
ARNavigationSession находится на сцене Main на одноименном объекте. Также к нему прикреплен скрипт FloorNavigationProgress со следующими настраиваемыми параметрами:
float radiusToRebuild // расстояние от пути в сторону, при преодолении которого
// путь будет перестроен
float defaultPointRadiusReached // на какое расстояние к точке назначения нужно
// подойти, чтобы пусть считался завершен