示例#1
0
 // 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);
     }
 }
示例#2
0
 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();
 }
示例#3
0
 // 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();
 }
示例#5
0
        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;
        }
示例#6
0
 private void HMDGazeDataReceivedCallback(object sender, HMDGazeDataEventArgs eventArgs)
 {
     _originalGazeData.Next = eventArgs;
 }