private void StartHandTrackingLock() { bool result = false; if (WaveVR.Instance.IsHandTrackingEnabled()) { result = true; SetHandTrackingStatus(WaveVR_Utils.HandTrackingStatus.AVAILABLE); } WaveVR_Utils.HandTrackingStatus status = GetHandTrackingStatus(); if (this.EnableHandTracking && ( status == WaveVR_Utils.HandTrackingStatus.NOT_START || status == WaveVR_Utils.HandTrackingStatus.START_FAILURE ) ) { SetHandTrackingStatus(WaveVR_Utils.HandTrackingStatus.STARTING); result = WaveVR.Instance.StartHandTracking(); SetHandTrackingStatus(result ? WaveVR_Utils.HandTrackingStatus.AVAILABLE : WaveVR_Utils.HandTrackingStatus.START_FAILURE); } status = GetHandTrackingStatus(); DEBUG("StartHandTrackingLock() " + result + ", status: " + status); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.HAND_TRACKING_STATUS, status); if (handTrackingResultCB != null) { handTrackingResultCB(this, result); handTrackingResultCB = null; } }
public void GetHandTrackingData() { WaveVR_Utils.HandTrackingStatus status = GetHandTrackingStatus(); if (status == WaveVR_Utils.HandTrackingStatus.AVAILABLE) { hasHandTrackingData = WaveVR.Instance.GetHandTrackingData(ref handSkeletonData, ref handPoseData, WaveVR_Render.Instance.origin); } }
private void SetHandTrackingStatus(WaveVR_Utils.HandTrackingStatus status) { try { handTrackingStatusRWLock.TryEnterWriteLock(2000); handTrackingStatus = status; } catch (Exception e) { Log.e(LOG_TAG, "SetHandTrackingStatus() " + e.Message, true); throw; } finally { handTrackingStatusRWLock.ExitWriteLock(); } }
private void StopHandTrackingLock() { if (!WaveVR.Instance.IsHandTrackingEnabled()) { SetHandTrackingStatus(WaveVR_Utils.HandTrackingStatus.NOT_START); } WaveVR_Utils.HandTrackingStatus status = GetHandTrackingStatus(); if (status == WaveVR_Utils.HandTrackingStatus.AVAILABLE) { DEBUG("StopHandTrackingLock()"); SetHandTrackingStatus(WaveVR_Utils.HandTrackingStatus.STOPING); WaveVR.Instance.StopHandTracking(); SetHandTrackingStatus(WaveVR_Utils.HandTrackingStatus.NOT_START); hasHandTrackingData = false; } status = GetHandTrackingStatus(); WaveVR_Utils.Event.Send(WaveVR_Utils.Event.HAND_TRACKING_STATUS, status); }