// 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 EnqueueEyeData(object sender, HMDGazeDataEventArgs e) { lock (_queue) { _queue.Enqueue(e); } }
internal static void HMDWriteRawGaze(this XmlWriter file, HMDGazeDataEventArgs originalGaze) { file.WriteStartElement("OriginalGaze"); file.WriteAttributeString("DeviceTimeStamp", originalGaze.DeviceTimeStamp.ToString()); file.WriteAttributeString("SystemTimeStamp", originalGaze.SystemTimeStamp.ToString()); file.HMDWriteEyeData(originalGaze.LeftEye, "LeftEye"); file.HMDWriteEyeData(originalGaze.RightEye, "RightEye"); file.WriteEndElement(); }
// This method will be called on the main Unity thread private void HandleGazeData(HMDGazeDataEventArgs e) { // Do something with gaze data // Debug.Log(string.Format( // "Got gaze data with {0} left eye origin at point ({1}, {2}, {3}) in the HMD coordinate system.", // e.LeftEye.GazeOrigin.Validity, // e.LeftEye.GazeOrigin.PositionInHMDCoordinates.X, // e.LeftEye.GazeOrigin.PositionInHMDCoordinates.Y, // e.LeftEye.GazeOrigin.PositionInHMDCoordinates.Z)); }
internal static void HMDWriteRawGaze(this XmlWriter file, HMDGazeDataEventArgs originalGaze) { System.String currentTime = System.DateTime.Now.ToString("MM/dd HH:mm:ss.fffff"); file.WriteStartElement("OriginalGaze"); file.WriteAttributeString("DeviceTimeStamp", originalGaze.DeviceTimeStamp.ToString()); file.WriteAttributeString("SystemTimeStamp", originalGaze.SystemTimeStamp.ToString()); file.WriteAttributeString("MyCustomStamp", currentTime); file.HMDWriteEyeData(originalGaze.LeftEye, "LeftEye"); file.HMDWriteEyeData(originalGaze.RightEye, "RightEye"); file.WriteEndElement(); }
internal VRGazeData(HMDGazeDataEventArgs originalGaze, EyeTrackerOriginPose pose) { Pose = pose; var eyeTrackerOrigin = VRUtility.TemporaryTransformWithAppliedPose(pose); Left = new GazeDataEye(originalGaze.LeftEye, eyeTrackerOrigin); Right = new GazeDataEye(originalGaze.RightEye, eyeTrackerOrigin); var combinedDirection = ((Left.GazeDirection + Right.GazeDirection) / 2f).normalized; var combinedOrigin = (Left.GazeOrigin + Right.GazeOrigin) / 2f; CombinedGazeRayWorld = new Ray(eyeTrackerOrigin.TransformPoint(combinedOrigin), eyeTrackerOrigin.TransformDirection(combinedDirection)); CombinedGazeRayWorldValid = Left.GazeRayWorldValid && Right.GazeRayWorldValid; OriginalGaze = originalGaze; }
private void HMDGazeDataReceivedCallback(object sender, HMDGazeDataEventArgs eventArgs) { _originalGazeData.Next = eventArgs; }