/// Maximum distance at which all pointers can collide with a <see href="https://docs.unity3d.com/ScriptReference/GameObject.html">GameObject</see>, unless it has an override extent.
/// </summary>
floatGlobalPointingExtent{get;}
/// <summary>
/// The layer masks for the focus pointers to raycast against.
/// </summary>
LayerMask[]FocusLayerMasks{get;}
/// <summary>
/// The Camera the <see href="https://docs.unity3d.com/ScriptReference/EventSystems.EventSystem.html">EventSystem</see> uses to raycast against.
/// </summary>
/// <remarks>Every uGUI canvas in your scene should use this camera as its event camera.</remarks>
CameraUIRaycastCamera{get;}
/// <summary>
/// Current primary pointer. Determined by the primary pointer selector in use (see MixedRealityPointerProfile.PrimaryPointerSelector).
/// </summary>
IMixedRealityPointerPrimaryPointer{get;}
/// <summary>
/// Gets the currently focused object for the pointing source.
/// </summary>
/// <remarks>If the pointing source is not registered, then the Gaze's Focused <see href="https://docs.unity3d.com/ScriptReference/GameObject.html">GameObject</see> is returned.</remarks>
/// Implements the Gaze Provider for an Input Source.
/// </summary>
publicinterfaceIMixedRealityGazeProvider
{
/// <summary>
/// Enable or disable the <see href="https://docs.unity3d.com/ScriptReference/Component.html">Component</see> attached to the <see cref="GameObjectReference"/>
/// </summary>
boolEnabled{get;set;}
/// <summary>
/// The Gaze Input Source for the provider.
/// </summary>
IMixedRealityInputSourceGazeInputSource{get;}
/// <summary>
/// The Gaze Pointer for the provider.
/// </summary>
IMixedRealityPointerGazePointer{get;}
/// <summary>
/// The prefab to be instantiated as the gaze cursor.
/// </summary>
GameObjectGazeCursorPrefab{set;}
/// <summary>
/// The Gaze Cursor for the provider.
/// </summary>
IMixedRealityCursorGazeCursor{get;}
/// <summary>
/// The game object that is currently being gazed at, if any.
/// </summary>
GameObjectGazeTarget{get;}
/// <summary>
/// HitInfo property gives access to information at the object being gazed at, if any.
/// </summary>
MixedRealityRaycastHitHitInfo{get;}
/// <summary>
/// Position at which the gaze manager hit an object.
/// If no object is currently being hit, this will use the last hit distance.
/// </summary>
Vector3HitPosition{get;}
/// <summary>
/// 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.
/// </summary>
Vector3HitNormal{get;}
/// <summary>
/// Origin of the gaze.
/// </summary>
Vector3GazeOrigin{get;}
/// <summary>
/// Normal of the gaze.
/// </summary>
Vector3GazeDirection{get;}
/// <summary>
/// The current head velocity.
/// </summary>
Vector3HeadVelocity{get;}
/// <summary>
/// The current head movement direction.
/// </summary>
Vector3HeadMovementDirection{get;}
/// <summary>
/// Get the GameObject reference for this Gaze Provider.
/// </summary>
GameObjectGameObjectReference{get;}
/// <summary>
/// Notifies this gaze provider of its new hit details.
/// </summary>
/// <remarks>
/// 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.
/// <param name="pointer">The pointer that has focus.</param>
/// <param name="focusedObject">The <see href="https://docs.unity3d.com/ScriptReference/GameObject.html">GameObject</see> that the pointer has entered focus on.</param>
/// <param name="pointer">The pointer that has lost focus.</param>
/// <param name="unfocusedObject">The <see href="https://docs.unity3d.com/ScriptReference/GameObject.html">GameObject</see> that the pointer has exited focus on.</param>
/// Returns true if the hand is near anything that's grabbable
/// Currently performs a sphere cast in the direction of the hand ray.
/// Currently anything that has a collider is considered "Grabbable"
/// Eventually we need to filter based on things that can respond
/// to grab events.
/// </summary>
boolIsNearObject{get;}
/// <summary>
/// For near pointer we may want to draw a tether between the pointer
/// and the object.
///
/// The visual grasp point (average of index and thumb) may actually be different from the pointer
/// position (the palm).
///
/// This method provides a mechanism to get the visual grasp point.
///
/// NOTE: Not all near pointers have a grasp point (for example a poke pointer).
/// </summary>
/// <param name="position">Out parameter filled with the grasp position if available, otherwise <see href="https://docs.unity3d.com/ScriptReference/Vector3-zero.html">Vector3.zero</see>.</param>
/// <returns>True if a grasp point was retrieved, false if not.</returns>
boolTryGetNearGraspPoint(outVector3position);
/// <summary>
/// Near pointers often interact with surfaces.
///
/// This method provides a mechanism to get the distance to the closest surface the near pointer is interacting with.
///
/// </summary>
/// <param name="distance">Out parameter filled with the distance along the surface normal from the surface to the pointer if available, otherwise 0.0f.</param>
/// <returns>True if a distance was retrieved, false if not.</returns>
/// This method provides a mechanism to get the normal of the closest surface the near pointer is interacting with.
///
/// </summary>
/// <param name="normal">Out parameter filled with the surface normal if available, otherwise <see href="https://docs.unity3d.com/ScriptReference/Vector3-zero.html">Vector3.zero</see>.</param>
/// <returns>True if a normal was retrieved, false if not.</returns>
/// Gets the <seealso cref="PointerBehavior"/> for a given pointer type,
/// handedness, and input type
/// </summary>
/// <typeparam name="T">All pointers that are of this type, or a subclass of this type, will have the given behavior</typeparam>
/// <param name="handedness">Specify Handedness.Any to apply to all handedness, or specify a specific handedness to just disable, right, left.</param>
/// <param name="sourceType">Allows specification of pointer behavior per input source, so that pointers can be disabled for hands but not controllers, and vice versa.</param>
/// Sets the <seealso cref="PointerBehavior"/> for a given pointer type,
/// handedness, and input type
/// </summary>
/// <typeparam name="T">All pointers that are of this type, or a subclass of this type, will have the given behavior</typeparam>
/// <param name="handedness">Specify Handedness.Any to apply to all handedness, or specify a specific handedness to just disable, right, left.</param>
/// <param name="sourceType">Allows specification of pointer behavior per input source, so that pointers can be disabled for hands but not controllers, and vice versa.</param>