private void UpdateHitTarget() { var eyeGazeProvider = CoreServices.InputSystem?.EyeGazeProvider; if (eyeGazeProvider != null) { if (lastEyeSignalUpdateTimeFromET != eyeGazeProvider.Timestamp) { lastEyeSignalUpdateTimeFromET = eyeGazeProvider.Timestamp; lastEyeSignalUpdateTimeLocal = DateTime.UtcNow; // ToDo: Handle raycasting layers RaycastHit hitInfo = default(RaycastHit); Ray lookRay = new Ray(eyeGazeProvider.GazeOrigin, eyeGazeProvider.GazeDirection.normalized); bool isHit = UnityEngine.Physics.Raycast(lookRay, out hitInfo); if (isHit) { LookedAtTarget = hitInfo.collider.gameObject; LookedAtEyeTarget = LookedAtTarget.GetComponent <EyeTrackingTarget>(); LookedAtPoint = hitInfo.point; } else { LookedAtTarget = null; LookedAtEyeTarget = null; } } else if ((DateTime.UtcNow - lastEyeSignalUpdateTimeLocal).TotalMilliseconds > EyeTrackingTimeoutInMilliseconds) { LookedAtTarget = null; LookedAtEyeTarget = null; } } }
private void UpdateHitTarget() { if (lastEyeSignalUpdateTimeFromET != CoreServices.InputSystem?.EyeGazeProvider?.Timestamp) { if ((CoreServices.InputSystem != null) && (CoreServices.InputSystem.EyeGazeProvider != null)) { lastEyeSignalUpdateTimeFromET = (CoreServices.InputSystem?.EyeGazeProvider?.Timestamp).Value; lastEyeSignalUpdateTimeLocal = DateTime.UtcNow; if (LookedAtTarget != null) { LookedAtEyeTarget = LookedAtTarget.GetComponent <EyeTrackingTarget>(); } } } else if ((DateTime.UtcNow - lastEyeSignalUpdateTimeLocal).TotalMilliseconds > EyeTrackingTimeoutInMilliseconds) { LookedAtEyeTarget = null; } }