private void ExtractMeshDataThread() { while (IsThreadRunning == true) { try { if (IsMeshUpdate == false && _UpdateDepthCollider == true) { ViveSR_DualCameraDepthExtra.GetDepthColliderFrameInfo(); int currentDepthColliderTimeIndex = ViveSR_DualCameraDepthExtra.DepthColliderTimeIndex; if (currentDepthColliderTimeIndex != LastDepthColliderUpdateTime) { ExtractCurrentColliders(); LastDepthColliderUpdateTime = currentDepthColliderTimeIndex; } } } catch (System.Exception e) { Debug.LogWarning(e.Message); } Thread.Sleep(ThreadPeriod); //Avoid too fast get data from SR SDK DLL } }
public override bool Release() { if (!ViveSR.EnableUnityDepth) { return(false); } if (ColliderObjs != null) { ColliderObjs.SetActive(false); } UpdateDepthCollider = false; UpdateDepthColliderRange = true; UpdateDepthColliderHoleFilling = true; ColliderMeshVisibility = false; IsThreadRunning = false; if (MeshDataThread != null) { MeshDataThread.Join(); MeshDataThread.Abort(); MeshDataThread = null; } if (IsCoroutineRunning == true) { StopCoroutine(MeshDataCoroutine); MeshDataCoroutine = null; } ViveSR_DualCameraDepthExtra.ReleaseDepthCollider(); MeshDataVertices.Clear(); MeshDataIndices.Clear(); return(true); }
private void ExtractCurrentColliders() { ViveSR_DualCameraDepthExtra.GetDepthColliderData(ref NumCldVertData, out VertexData, ref NumCldIdxData, out CldIdxData); if (NumCldVertData != 0 && NumCldIdxData != 0) { GenerateMeshColliders(); } }
public override bool Initial() { if (!ViveSR.EnableUnityDepth) { return(false); } if (ViveSR.FrameworkStatus == FrameworkStatus.WORKING) { if (ViveSR_Framework.MODULE_ID_DEPTH != 0) { ViveSR_DualCameraDepthExtra.InitialDepthCollider(ViveSR_DualCameraImageCapture.DepthImageWidth, ViveSR_DualCameraImageCapture.DepthImageHeight); if (ColliderObjs == null) { ColliderObjs = new GameObject("Depth Collider"); ColliderObjs.transform.SetParent(gameObject.transform, false); ColliderMeshes = ColliderObjs.AddComponent <MeshFilter>(); ColliderMeshes.mesh = new Mesh(); ColliderMeshes.mesh.MarkDynamic(); ChangeColliderMaterial(ColliderDefaultMaterial); MeshClds = ColliderObjs.AddComponent <MeshCollider>(); } ColliderObjs.SetActive(true); ColliderMeshVisibility = false; SetQualityScale(QualityScale); if (MeshDataThread == null) { IsMeshUpdate = false; IsCoroutineRunning = false; IsThreadRunning = true; MeshDataThread = new Thread(ExtractMeshDataThread) { IsBackground = true }; MeshDataThread.Start(); } return(true); } else { return(false); } } return(false); }
public void ExtractMeshData() { try { if (IsMeshUpdate == false && _UpdateDepthCollider == true) { ViveSR_DualCameraDepthExtra.GetDepthColliderFrameInfo(); int currentDepthColliderTimeIndex = ViveSR_DualCameraDepthExtra.DepthColliderTimeIndex; if (currentDepthColliderTimeIndex != LastDepthColliderUpdateTime) { ExtractCurrentColliders(); LastDepthColliderUpdateTime = currentDepthColliderTimeIndex; } } } catch (System.Exception e) { Debug.LogWarning(e.Message); } }