Example #1
0
        private static void OnWearableData(ref tobii_wearable_consumer_data_t data, IntPtr userData)
        {
            var gch = GCHandle.FromIntPtr(userData);
            var t   = (WearableDataCallback)gch.Target;

            t.Invoke(ref data);
        }
        private static void OnWearableData(ref tobii_wearable_consumer_data_t data, IntPtr user_data)
        {
            var gch = GCHandle.FromIntPtr(user_data);
            var t   = (StreamEngineTracker)gch.Target;

            CopyEyeTrackingData(t.LocalLatestData, ref data);
            t.ReceivedDataThisFrame = true;
        }
        private void OnWearableData(ref tobii_wearable_consumer_data_t data)
        {
            lock (_lockEyeTrackingDataLocal)
            {
                StreamEngineDataMapper.FromConsumerData(_eyeTrackingDataLocalInternal, ref data,
                                                        _streamEngineTracker.ConvergenceDistanceSupported, _headToCenterEyeTranslation);
            }

            lock (_lockPositionGuideData)
            {
                StreamEngineDataMapper.FillPositionGuideData(ref _positionGuideData, ref data);
            }
        }
Example #4
0
        public static void FromConsumerData(TobiiXR_EyeTrackingData to,
                                            ref tobii_wearable_consumer_data_t data, bool convergenceDistanceSupported, Vector3 headToCenterEyeTranslation)
        {
            FillGazeRayFrom(ref to.GazeRay, data.gaze_origin_combined_validity, data.gaze_origin_combined_mm_xyz, data.gaze_direction_combined_validity, data.gaze_direction_combined_normalized_xyz, headToCenterEyeTranslation);

            if (convergenceDistanceSupported)
            {
                to.ConvergenceDistance        = data.convergence_distance_mm / 1000f;
                to.ConvergenceDistanceIsValid =
                    data.convergence_distance_validity == tobii_validity_t.TOBII_VALIDITY_VALID;
            }

            to.IsLeftEyeBlinking = data.left.blink == tobii_state_bool_t.TOBII_STATE_BOOL_TRUE ||
                                   data.left.blink_validity ==
                                   tobii_validity_t.TOBII_VALIDITY_INVALID;
            to.IsRightEyeBlinking = data.right.blink == tobii_state_bool_t.TOBII_STATE_BOOL_TRUE ||
                                    data.right.blink_validity ==
                                    tobii_validity_t.TOBII_VALIDITY_INVALID;
        }
Example #5
0
 private void OnWearableData(ref tobii_wearable_consumer_data_t data)
 {
     StreamEngineDataMapper.FromConsumerData(_eyeTrackingDataLocal, ref data,
                                             _streamEngineTracker.ConvergenceDistanceSupported, CoordinatesHelper.GetHeadToCenterEyeTranslation());
     _eyeTrackingDataLocal.Timestamp = Time.unscaledTime;
 }
        private static void CopyEyeTrackingData(TobiiXR_EyeTrackingData latestDataLocalSpace, ref tobii_wearable_consumer_data_t data)
        {
            latestDataLocalSpace.GazeRay.IsValid     = data.gaze_direction_combined_validity == tobii_validity_t.TOBII_VALIDITY_VALID && data.gaze_origin_combined_validity == tobii_validity_t.TOBII_VALIDITY_VALID;
            latestDataLocalSpace.GazeRay.Origin.x    = data.gaze_origin_combined_mm_xyz.x * -1 / 1000f;
            latestDataLocalSpace.GazeRay.Origin.y    = data.gaze_origin_combined_mm_xyz.y / 1000f;
            latestDataLocalSpace.GazeRay.Origin.z    = data.gaze_origin_combined_mm_xyz.z / 1000f;
            latestDataLocalSpace.GazeRay.Direction.x = data.gaze_direction_combined_normalized_xyz.x * -1;
            latestDataLocalSpace.GazeRay.Direction.y = data.gaze_direction_combined_normalized_xyz.y;
            latestDataLocalSpace.GazeRay.Direction.z = data.gaze_direction_combined_normalized_xyz.z;

            if (_convergenceDistanceSupported)
            {
                latestDataLocalSpace.ConvergenceDistance        = data.convergence_distance_mm / 1000f;
                latestDataLocalSpace.ConvergenceDistanceIsValid = data.convergence_distance_validity == tobii_validity_t.TOBII_VALIDITY_VALID;
            }

            latestDataLocalSpace.IsLeftEyeBlinking  = data.left.blink == tobii_state_bool_t.TOBII_STATE_BOOL_TRUE || data.left.blink_validity == tobii_validity_t.TOBII_VALIDITY_INVALID;
            latestDataLocalSpace.IsRightEyeBlinking = data.right.blink == tobii_state_bool_t.TOBII_STATE_BOOL_TRUE || data.right.blink_validity == tobii_validity_t.TOBII_VALIDITY_INVALID;
        }
 public static void FillPositionGuideData(ref PositionGuideData to,
                                          ref tobii_wearable_consumer_data_t data)
 {
     FillPositionGuideData(ref to, data.left.position_guide_xy, data.left.position_guide_validity,
                           data.right.position_guide_xy, data.right.position_guide_validity);
 }