8 public class VuforiaSessionManager : IARSessionManager
10 private PositionalDeviceTracker positionalDeviceTracker;
11 private string sessionInfoString;
12 private bool trackingStarted;
13 private Action trackingStartedCallback;
14 private Action onAfterReset;
15 private Action trackingRestoredCallback;
16 private TrackableBehaviour.Status currentStatus = TrackableBehaviour.Status.NO_POSE;
17 private Action trackingLostCallback;
19 public bool DebugMode {
get;
set; }
21 public VuforiaSessionManager()
23 positionalDeviceTracker = TrackerManager.Instance.GetTracker<PositionalDeviceTracker>();
25 if (positionalDeviceTracker ==
null)
27 sessionInfoString =
"NO POSITIONAL TRACKER";
30 VuforiaARController.Instance.RegisterVuforiaStartedCallback(OnVuforiaStarted);
31 VuforiaARController.Instance.RegisterOnPauseCallback(OnVuforiaPaused);
32 DeviceTrackerARController.Instance.RegisterTrackerStartedCallback(OnTrackerStarted);
33 DeviceTrackerARController.Instance.RegisterDevicePoseStatusChangedCallback(OnDevicePoseStatusChanged);
36 private void OnDevicePoseStatusChanged(TrackableBehaviour.Status arg1, TrackableBehaviour.StatusInfo arg2)
38 sessionInfoString = $
"OnDevicePoseStatusChanged: {arg1} - {arg2}";
40 Logger.LogFromMethod(
"VuforiaSessionManager",
"OnDevicePoseStatusChanged", sessionInfoString, DebugMode);
42 if (arg1 != TrackableBehaviour.Status.NO_POSE)
46 trackingStarted =
true;
47 Logger.LogFromMethod(
"VuforiaSessionManager",
"OnDevicePoseStatusChanged",
"Tracking Started!.", DebugMode);
48 trackingStartedCallback?.Invoke();
50 else if (currentStatus == TrackableBehaviour.Status.NO_POSE)
52 Logger.LogFromMethod(
"VuforiaSessionManager",
"OnDevicePoseStatusChanged",
"Tracking Restored!", DebugMode);
53 trackingRestoredCallback?.Invoke();
56 if (onAfterReset !=
null)
58 Logger.LogFromMethod(
"VuforiaSessionManager",
"OnDevicePoseStatusChanged",
"Emitting 'OnAfterReset' event.", DebugMode);
59 onAfterReset.Invoke();
63 else if (currentStatus != TrackableBehaviour.Status.NO_POSE)
65 Logger.LogFromMethod(
"VuforiaSessionManager",
"OnDevicePoseStatusChanged",
"Tracking Lost!", DebugMode);
66 trackingLostCallback?.Invoke();
72 private void OnTrackerStarted()
74 sessionInfoString = $
"OnTrackerStarted";
77 private void OnVuforiaPaused(
bool obj)
79 sessionInfoString = $
"OnVuforiaPaused";
82 private void OnVuforiaStarted()
84 sessionInfoString = $
"OnVuforiaStarted";
88 public void Reset(Action callback)
90 positionalDeviceTracker?.Reset();
91 onAfterReset += callback;
94 public string GetSessionInfoString()
96 return sessionInfoString;
99 public string GetProviderString()
101 return "Vuforia (" + VuforiaUnity.GetVuforiaLibraryVersion() +
")";
104 public void OnARTrackingStarted(Action callback)
112 trackingStartedCallback += callback;
115 public void OnARTrackingRestored(Action callback)
117 trackingRestoredCallback += callback;
120 public void OnARTrackingLost(Action callback)
122 trackingLostCallback += callback;