/// <summary> /// Called when a remote anchor has been deserialized /// </summary> /// <param name="status">Tracks if the import worked</param> /// <param name="wat">The WorldAnchorTransferBatch that has the anchor information.</param> private void ImportComplete(UnityEngine.XR.WSA.Sharing.SerializationCompletionReason status, UnityEngine.XR.WSA.Sharing.WorldAnchorTransferBatch wat) { if (status == UnityEngine.XR.WSA.Sharing.SerializationCompletionReason.Succeeded && wat.GetAllIds().Length > 0) { Debug.Log("Import complete"); string first = wat.GetAllIds()[0]; Debug.Log("Anchor name: " + first); UnityEngine.XR.WSA.WorldAnchor existingAnchor = objectToAnchor.GetComponent <UnityEngine.XR.WSA.WorldAnchor>(); if (existingAnchor != null) { DestroyImmediate(existingAnchor); } UnityEngine.XR.WSA.WorldAnchor anchor = wat.LockObject(first, objectToAnchor); anchor.OnTrackingChanged += Anchor_OnTrackingChanged; Anchor_OnTrackingChanged(anchor, anchor.isLocated); ImportInProgress = false; } else { // if we failed, we can simply try again. gotOne = true; Debug.Log("Import fail"); } }
/// <summary> /// Called when serializing an anchor is complete. /// </summary> /// <param name="status">If the serialization succeeded.</param> private void ExportComplete(UnityEngine.XR.WSA.Sharing.SerializationCompletionReason status) { if (status == UnityEngine.XR.WSA.Sharing.SerializationCompletionReason.Succeeded && exportingAnchorBytes.Count > minTrustworthySerializedAnchorDataSize) { AnchorName = exportingAnchorName; anchorData = exportingAnchorBytes.ToArray(); GenericNetworkTransmitter.Instance.SetData(anchorData); createdAnchor = true; Debug.Log("Anchor ready " + exportingAnchorBytes.Count); GenericNetworkTransmitter.Instance.ConfigureAsServer(); AnchorEstablished = true; PlayerController.Instance.CmdSetAnchorName(exportingAnchorName); } else { Debug.Log("Create anchor failed " + status + " " + exportingAnchorBytes.Count); exportingAnchorBytes.Clear(); objectToAnchor = UNetAnchorManager.Instance.gameObject; DestroyImmediate(objectToAnchor.GetComponent <UnityEngine.XR.WSA.WorldAnchor>()); CreateAnchor(); } }