/// <summary> /// Shut down gaze watcher and stop listening for events. /// </summary> private void StopGazeDeviceWatcher() { if (gazeDeviceWatcher != null) { gazeDeviceWatcher.Stop(); gazeDeviceWatcher.Added -= this.DeviceAdded; gazeDeviceWatcher.Updated -= this.DeviceUpdated; gazeDeviceWatcher = null; } }
/// <summary> /// Start gaze watcher and declare watcher event handlers. /// </summary> private void StartGazeDeviceWatcher() { if (gazeDeviceWatcher == null) { gazeDeviceWatcher = GazeInputSourcePreview.CreateWatcher(); gazeDeviceWatcher.Added += this.DeviceAdded; gazeDeviceWatcher.Updated += this.DeviceUpdated; gazeDeviceWatcher.Start(); } }
private void OnDeviceAdded(GazeDeviceWatcherPreview sender, GazeDeviceWatcherAddedPreviewEventArgs args) { _devices.Add(args.Device); if (_devices.Count == 1) { IsDeviceAvailableChanged?.Invoke(null, null); InitializeGazeInputSource(); } }
/// <summary> /// Eye-tracking device connected (added, or available when watcher is initialized). /// </summary> /// <param name="sender">Source of the device added event</param> /// <param name="e">Event args for the device added event</param> private void DeviceAdded(GazeDeviceWatcherPreview source, GazeDeviceWatcherAddedPreviewEventArgs args) { if (IsSupportedDevice(args.Device)) { deviceCounter++; TrackerCounter.Text = deviceCounter.ToString(); } // Set up gaze tracking. TryEnableGazeTrackingAsync(args.Device); }
private void StopGazeDeviceWatcher() { if (_gazeDeviceWatcher == null) { return; } _gazeDeviceWatcher.Stop(); _gazeDeviceWatcher.Added -= DeviceAdded; _gazeDeviceWatcher.Updated -= DeviceUpdated; _gazeDeviceWatcher.Removed -= DeviceRemoved; _gazeDeviceWatcher = null; }
private void OnDeviceAdded(GazeDeviceWatcherPreview sender, GazeDeviceWatcherAddedPreviewEventArgs args) { _deviceCount++; Log($"Device added, count={_deviceCount}", args.Device); if (!_isSourceHoooked) { _source.GazeEntered += OnGazeEntered; _source.GazeMoved += OnGazeMoved; _source.GazeExited += OnGazeExited; _isSourceHoooked = true; } }
private void DeviceRemoved(GazeDeviceWatcherPreview source, GazeDeviceWatcherRemovedPreviewEventArgs args) { // Decrement gaze device counter and remove event handlers if (IsSupportedDevice(args.Device)) { _deviceCounter--; if (_deviceCounter == 0) { _gazeInputSource.GazeEntered -= GazeEntered; _gazeInputSource.GazeMoved -= GazeTrackerMoved; _gazeInputSource.GazeExited -= GazeExited; } } }
/// <summary> /// Handles disconnection of eye-tracking devices. /// </summary> /// <param name="sender">Source of the device removed event</param> /// <param name="e">Event args for the device removed event</param> private void DeviceRemoved(GazeDeviceWatcherPreview source, GazeDeviceWatcherRemovedPreviewEventArgs args) { // Decrement gaze device counter and remove event handlers. if (IsSupportedDevice(args.Device)) { deviceCounter--; TrackerCounter.Text = deviceCounter.ToString(); if (deviceCounter == 0) { gazeInputSource.GazeEntered -= this.GazeEntered; gazeInputSource.GazeMoved -= this.GazeMoved; gazeInputSource.GazeExited -= this.GazeExited; } } }
private void OnDeviceRemoved(GazeDeviceWatcherPreview sender, GazeDeviceWatcherRemovedPreviewEventArgs args) { var index = 0; while (index < _devices.Count && _devices.ElementAt(index).Id != args.Device.Id) { index++; } if (index < _devices.Count) { _devices.RemoveAt(index); } else { _devices.RemoveAt(0); } if (_devices.Count == 0) { IsDeviceAvailableChanged?.Invoke(null, null); } }
/// <summary> /// Initial device state might be uncalibrated, /// but device was subsequently calibrated. /// </summary> /// <param name="sender">Source of the device updated event</param> /// <param name="e">Event args for the device updated event</param> private void DeviceUpdated(GazeDeviceWatcherPreview source, GazeDeviceWatcherUpdatedPreviewEventArgs args) { // Set up gaze tracking. TryEnableGazeTrackingAsync(args.Device); }
private void OnDeviceEnumerationCompleted(GazeDeviceWatcherPreview sender, object args) { Log($"Device enumeration complete, count={_deviceCount}"); }
private void OnDeviceUpdated(GazeDeviceWatcherPreview sender, GazeDeviceWatcherUpdatedPreviewEventArgs args) { Log("Device updated", args.Device); }
private void OnDeviceRemoved(GazeDeviceWatcherPreview sender, GazeDeviceWatcherRemovedPreviewEventArgs args) { _deviceCount--; Log($"Device removed, count={_deviceCount}", args.Device); }