#if IMPLEMENTED_EYETRACKING using Microsoft.MixedReality.Toolkit.Input; using OmiLAXR.TrackingBehaviours; using UnityEngine; using UnityEngine.Events; public class EyeTrackingBehaviour : TrackingBehaviour { public TrackingBehaviourEvent eyeTrackingTargetOnLookAtStart = new TrackingBehaviourEvent(); public TrackingBehaviourEvent eyeTrackingTargetOnLookAway = new TrackingBehaviourEvent(); public TrackingBehaviourEvent eyeTrackingTargetOnDwell = new TrackingBehaviourEvent(); public TrackingBehaviourEvent gazeDetectionOnLookAtStart = new TrackingBehaviourEvent(); public TrackingBehaviourEvent gazeDetectionOnLookAtEnd = new TrackingBehaviourEvent(); public TrackingBehaviourEvent gazeDetectionOnDwell = new TrackingBehaviourEvent(); protected override void AfterFilteredObjects(Object[] objects) { var eyeTrackingTargetSelectables = Select(objects); foreach (var selectable in eyeTrackingTargetSelectables) { eyeTrackingTargetOnLookAtStart.Bind(selectable.OnLookAtStart, () => { eyeTrackingTargetOnLookAtStart.Invoke(this, selectable); }); eyeTrackingTargetOnLookAway.Bind(selectable.OnLookAway, () => { eyeTrackingTargetOnLookAway.Invoke(this, selectable); }); eyeTrackingTargetOnDwell.Bind(selectable.OnDwell, () => { eyeTrackingTargetOnLookAway.Invoke(this, selectable); }); } var gazeDetectionSelectables = Select(objects); foreach (var selectable in gazeDetectionSelectables) { gazeDetectionOnLookAtStart.Bind(selectable.onLookAtStart, (gazeTarget) => { gazeDetectionOnLookAtStart.Invoke(this, selectable, gazeTarget); }); gazeDetectionOnLookAtEnd.Bind(selectable.onLookAtEnd, (gazeTarget) => { gazeDetectionOnLookAtEnd.Invoke(this, selectable, gazeTarget); }); gazeDetectionOnDwell.Bind(selectable.onDwell, (gazeTarget) => { gazeDetectionOnDwell.Invoke(this, selectable, gazeTarget); }); } } } #endif