/// <summary> /// Apply an existing <see cref="ARWorldMap"/> to the session. This will attempt /// to relocalize the current session to the given <paramref name="worldMap"/>. /// If relocalization is successful, the stored planes & reference points from /// the <paramref name="worldMap"/> will be added to the current session. /// This is equivalent to setting the <a href="https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration/2968180-initialworldmap">initialWorldMap</a> /// property on the session's <a href="https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration">ARWorldTrackingConfiguration</a>. /// </summary> /// <param name="worldMap">An <see cref="ARWorldMap"/> with which to relocalize the session.</param> public void ApplyWorldMap( ARWorldMap worldMap) { if (worldMap.nativeHandle == ARWorldMap.k_InvalidHandle) throw new InvalidOperationException("ARWorldMap has been disposed."); NativeApi.UnityARKit_applyWorldMap(worldMap.nativeHandle); }
void ApplyWorldMap(ARWorldMap arWorldMap) { arSession.Reset(); if (!(arSession.subsystem is ARKitSessionSubsystem arKitSessionSubsystem)) { throw new Exception("No session subsystem available. Could not load."); } if (!arWorldMap.valid) { throw new Exception("Data is not a valid ARWorldMap"); } arKitSessionSubsystem.ApplyWorldMap(arWorldMap); }
/// <summary> /// Apply an existing <see cref="ARWorldMap"/> to the session. This will attempt /// to relocalize the current session to the given <paramref name="worldMap"/>. /// If relocalization is successful, the stored planes & reference points from /// the <paramref name="worldMap"/> will be added to the current session. /// This is equivalent to setting the <a href="https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration/2968180-initialworldmap">initialWorldMap</a> /// property on the session's <a href="https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration">ARWorldTrackingConfiguration</a>. /// </summary> /// <param name="sessionSubsystem">The <c>XRSessionSubsystem</c> being extended.</param> /// <param name="worldMap">An <see cref="ARWorldMap"/> with which to relocalize the session.</param> public static void ApplyWorldMap( this XRSessionSubsystem sessionSubsystem, ARWorldMap worldMap) { if (sessionSubsystem == null) { throw new ArgumentNullException("sessionSubsystem"); } if (worldMap.nativeHandle == ARWorldMap.k_InvalidHandle) { throw new InvalidOperationException("ARWorldMap has been disposed."); } Api.UnityARKit_applyWorldMap(worldMap.nativeHandle); }
static unsafe void OnAsyncConversionComplete(ARWorldMapRequestStatus status, int worldMapId, IntPtr context) { var handle = GCHandle.FromIntPtr(context); var onComplete = (Action <ARWorldMapRequestStatus, ARWorldMap>)handle.Target; if (status.IsError()) { onComplete(status, default(ARWorldMap)); } else { var worldMap = new ARWorldMap(worldMapId); onComplete(status, worldMap); } handle.Free(); }