// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using UnityEngine; namespace Microsoft.MixedReality.Toolkit.Input { /// /// Implements the Gaze Provider for an Input Source. /// public interface IMixedRealityGazeProvider { /// /// Enable or disable the Component attached to the /// bool Enabled { get; set; } /// /// The Gaze Input Source for the provider. /// IMixedRealityInputSource GazeInputSource { get; } /// /// The Gaze Pointer for the provider. /// IMixedRealityPointer GazePointer { get; } /// /// The prefab to be instantiated as the gaze cursor. /// GameObject GazeCursorPrefab { set; } /// /// The Gaze Cursor for the provider. /// IMixedRealityCursor GazeCursor { get; } /// /// The game object that is currently being gazed at, if any. /// GameObject GazeTarget { get; } /// /// HitInfo property gives access to information at the object being gazed at, if any. /// MixedRealityRaycastHit HitInfo { get; } /// /// Position at which the gaze manager hit an object. /// If no object is currently being hit, this will use the last hit distance. /// Vector3 HitPosition { get; } /// /// Normal of the point at which the gaze manager hit an object. /// If no object is currently being hit, this will return the previous normal. /// Vector3 HitNormal { get; } /// /// Origin of the gaze. /// Vector3 GazeOrigin { get; } /// /// Normal of the gaze. /// Vector3 GazeDirection { get; } /// /// The current head velocity. /// Vector3 HeadVelocity { get; } /// /// The current head movement direction. /// Vector3 HeadMovementDirection { get; } /// /// Get the GameObject reference for this Gaze Provider. /// GameObject GameObjectReference { get; } /// /// Notifies this gaze provider of its new hit details. /// /// /// For components that care where the user's looking, we need /// to separately update the gaze info even if gaze isn't used for focus. /// void UpdateGazeInfoFromHit(MixedRealityRaycastHit raycastHit); } }