private void OnUserPositionGuideReceived(object sender, UserPositionGuideEventArgs e) { lock (_userPositionGuideLock) { _latestUserPositionGuideData = new UserPositionGuideData(e); } }
internal UserPositionGuideData(UserPositionGuideEventArgs userPositionGuideData) { LeftEye = userPositionGuideData.LeftEye.UserPosition.ToVector3(); RightEye = userPositionGuideData.RightEye.UserPosition.ToVector3(); LeftEyeValid = userPositionGuideData.LeftEye.Validity == Validity.Valid; RightEyeValid = userPositionGuideData.RightEye.Validity == Validity.Valid; }
// This method will be called on a thread belonging to the SDK, and can not safely change values // that will be read from the main thread. private void EnqueueUserPositionGuide(object sender, UserPositionGuideEventArgs e) { lock (_queue) { _queue.Enqueue(e); } }
// This method will be called on the main Unity thread private void HandleUserPositionGuide(UserPositionGuideEventArgs e) { // Do something with user position guide // Debug.Log(string.Format( // "Got user position guide with validity: {0} with normalized coordinates ({1}, {2}, {3}).", // e.LeftEye.Validity, // e.LeftEye.UserPosition.X, // e.LeftEye.UserPosition.Y, // e.LeftEye.UserPosition.Z)); }