3 using UnityEngine.XR.ARFoundation;
10 public static class ARSessionStateExtensions
12 public static string ToInfoString(
this ARSessionState state)
16 case ARSessionState.None:
18 case ARSessionState.Unsupported:
20 case ARSessionState.CheckingAvailability:
21 return "CheckingAvailability";
22 case ARSessionState.NeedsInstall:
23 return "NeedsInstall";
24 case ARSessionState.Installing:
26 case ARSessionState.Ready:
28 case ARSessionState.SessionInitializing:
29 return "SessionInitializing";
30 case ARSessionState.SessionTracking:
31 return "SessionTracking";
41 #if !ARGPS_USE_VUFORIA
44 private readonly ARSession arSession;
45 private Action onAfterReset;
46 private string infoString;
47 private bool trackingStarted;
48 private Action trackingStartedCallback;
49 private Action trackingRestoredCallback;
50 private Action trackingLostCallback;
51 private ARSessionState currentStatus;
53 public bool DebugMode {
get;
set; }
58 ARSession.stateChanged += ARSessionOnStateChanged;
61 private void ARSessionOnStateChanged(ARSessionStateChangedEventArgs args)
63 infoString = args.state.ToInfoString();
65 Logger.LogFromMethod(
"ARFoundationSessionManager",
"ARSessionOnStateChanged", infoString, DebugMode);
67 if (args.state == ARSessionState.SessionTracking)
71 trackingStarted =
true;
72 Logger.LogFromMethod(
"ARFoundationSessionManager",
"ARSessionOnStateChanged",
"Tracking Started!.", DebugMode);
73 trackingStartedCallback?.Invoke();
75 else if (currentStatus != ARSessionState.SessionTracking )
77 Logger.LogFromMethod(
"ARFoundationSessionManager",
"ARSessionOnStateChanged",
"Tracking Restored!", DebugMode);
78 trackingRestoredCallback?.Invoke();
81 if (onAfterReset !=
null)
83 Logger.LogFromMethod(
"ARFoundationSessionManager",
"ARSessionOnStateChanged",
"Emitting 'OnAfterReset' event.", DebugMode);
84 onAfterReset.Invoke();
88 else if (currentStatus == ARSessionState.SessionTracking)
90 Logger.LogFromMethod(
"ARFoundationSessionManager",
"ARSessionOnStateChanged",
"Tracking Lost!", DebugMode);
91 trackingLostCallback?.Invoke();
94 currentStatus = args.state;
97 public void Reset(Action callback)
100 onAfterReset += callback;
103 public string GetSessionInfoString()
108 public string GetProviderString()
110 return "ARFoundation";
113 public void OnARTrackingStarted(Action callback)
121 trackingStartedCallback += callback;
124 public void OnARTrackingRestored(Action callback)
126 trackingRestoredCallback += callback;
129 public void OnARTrackingLost(Action callback)
131 trackingLostCallback += callback;