static void OnPose(ref PNTransformUnity outputPose, ref PNTransformUnity arkitPose, IntPtr context) { Matrix4x4 outputPoseMat = PNUtility.MatrixOps.PNPose2Matrix4x4(outputPose); Matrix4x4 arkitPoseMat = PNUtility.MatrixOps.PNPose2Matrix4x4(arkitPose); MappingStatus status = Instance.GetStatus(); var listeners = Instance.listeners; if (status == MappingStatus.RUNNING) { MainThreadTaskQueue.InvokeOnMainThread(() => { foreach (var listener in listeners) { listener.OnPose(outputPoseMat, arkitPoseMat); } }); Instance.mCurrentTransform = outputPoseMat * arkitPoseMat.inverse; } if (status != Instance.mPrevStatus) { MainThreadTaskQueue.InvokeOnMainThread(() => { foreach (var listener in listeners) { listener.OnStatusChange(Instance.mPrevStatus, status); } Instance.mPrevStatus = status; }); } }
static void OnMapLoaded(ref PNTransferStatusUnity status, IntPtr contextPtr) { GCHandle handle = GCHandle.FromIntPtr(contextPtr); Action <bool, bool, float> loadProgressCb = handle.Target as Action <bool, bool, float>; PNTransferStatusUnity statusClone = status; MainThreadTaskQueue.InvokeOnMainThread(() => { if (statusClone.completed) { Debug.Log("Loaded map!"); loadProgressCb(true, false, 1); handle.Free(); } else if (statusClone.faulted) { Debug.Log("Failed to downloading map!"); loadProgressCb(false, true, 0); handle.Free(); } else { Debug.Log("Downloading map!"); loadProgressCb(false, false, (float)(statusClone.bytesTransferred) / statusClone.bytesTotal); } }); }
static void OnMapUploaded(ref PNTransferStatusUnity status, IntPtr contextPtr) { GCHandle handle = GCHandle.FromIntPtr(contextPtr); SaveLoadContext context = handle.Target as SaveLoadContext; Action <bool, bool, float> progressCb = context.progressCb; PNTransferStatusUnity statusClone = status; Debug.Log(String.Format("mapId {0} completed {1} faulted {2} bytesTransferred {3} bytesTotal {4}", status.mapId, status.completed, status.faulted, status.bytesTransferred, status.bytesTotal) ); MainThreadTaskQueue.InvokeOnMainThread(() => { if (statusClone.completed) { Debug.Log("Uploaded map!"); progressCb(true, false, 1); handle.Free(); } else if (statusClone.faulted) { Debug.Log("Failed to upload map!"); progressCb(false, true, 0); handle.Free(); } else { Debug.Log("Uploading map!"); progressCb(false, false, (float)(statusClone.bytesTransferred) / statusClone.bytesTotal); } }); }
void OnDestroy() { MainThreadTaskQueue.Flush(); _chunkStreaming.Dispose(); _volume.Dispose(); _streaming.Dispose(); World.Streaming.StaticShutdown(); }
void Update() { if (_tick) { _streaming.Tick(); } MainThreadTaskQueue.Run(); }
//------------------------Notification for users------------------------ public void ShowMessage(string message) { if (messageText != null) { MainThreadTaskQueue.InvokeOnMainThread(() => { messageText.text = message; }); } }
public void PrintDebugMessage(string message) { if (debugPanelController != null) { //debugPanelController.PushMessage(message); MainThreadTaskQueue.InvokeOnMainThread(() => { debugPanelController.PushMessage(message); }); } }
private static void OnMapDeleted(ref PNCallbackResultUnity result, IntPtr context) { GCHandle handle = GCHandle.FromIntPtr(context); Action <bool, string> deletedCb = handle.Target as Action <bool, string>; bool deleted = result.success; string errorMsg = result.msg; MainThreadTaskQueue.InvokeOnMainThread(() => { if (deleted) { deletedCb(true, "Success"); } else { deletedCb(true, "Failed to delete, error: " + errorMsg); } handle.Free(); }); }
static void OnMapList(ref PNCallbackResultUnity result, IntPtr context) { GCHandle handle = GCHandle.FromIntPtr(context); Action <MapInfo[]> listCb = handle.Target as Action <MapInfo[]>; PNCallbackResultUnity resultClone = result; MainThreadTaskQueue.InvokeOnMainThread(() => { if (resultClone.success) { String listJson = resultClone.msg; MapList mapIdList = JsonConvert.DeserializeObject <MapList> (listJson); listCb(mapIdList.places); } else { Debug.LogError("Failed to fetch map list, error: " + resultClone.msg); listCb(null); } handle.Free(); }); }
static void OnMapSaved(ref PNCallbackResultUnity result, IntPtr contextPtr) { GCHandle handle = GCHandle.FromIntPtr(contextPtr); SaveLoadContext context = handle.Target as SaveLoadContext; Action <String> savedCb = context.savedCb; PNCallbackResultUnity resultClone = result; MainThreadTaskQueue.InvokeOnMainThread(() => { if (resultClone.success) { String mapId = resultClone.msg; Debug.Log("Added a record to map db with id " + mapId); PNSaveMap(mapId, OnMapUploaded, contextPtr); savedCb(mapId); } else { Debug.Log(String.Format("Failed to add the map! Error msg: %s", resultClone.msg)); savedCb(null); handle.Free(); } }); }
//------------------------Debug panel----------------------------------- public void DebugMessage(string msgLine) { if (!debugPanelController.Equals(null)) { string[] msgLineArr = msgLine.Split(Environment.NewLine.ToCharArray()); if (msgLineArr != null && msgLineArr.Length > 0) { foreach (string line in msgLineArr) { MainThreadTaskQueue.InvokeOnMainThread(() => { debugPanelController.PushMessage(line); }); } } else { MainThreadTaskQueue.InvokeOnMainThread(() => { debugPanelController.PushMessage(msgLine); }); } } }
void Awake() { sInstance = this; }
void Awake() { _instance = this; }