// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using Microsoft.MixedReality.Toolkit.Utilities; namespace Microsoft.MixedReality.Toolkit.Input { /// /// Provides interface for getting and setting behaviors and /// possible other settings for pointers in the input system. /// Behaviors are described based on pointer type and input type, /// not per pointer. This is to ensure that new pointers that appear /// maintain consistent behavior. /// public interface IPointerPreferences { /// /// Gets the for a given pointer /// PointerBehavior GetPointerBehavior(IMixedRealityPointer pointer); /// /// Gets the for a given pointer type, /// handedness, and input type /// /// All pointers that are of this type, or a subclass of this type, will have the given behavior /// Specify Handedness.Any to apply to all handedness, or specify a specific handedness to just disable, right, left. /// Allows specification of pointer behavior per input source, so that pointers can be disabled for hands but not controllers, and vice versa. PointerBehavior GetPointerBehavior( Handedness handedness, InputSourceType sourceType) where T : class, IMixedRealityPointer; /// /// Sets the for a given pointer type, /// handedness, and input type /// /// All pointers that are of this type, or a subclass of this type, will have the given behavior /// Specify Handedness.Any to apply to all handedness, or specify a specific handedness to just disable, right, left. /// Allows specification of pointer behavior per input source, so that pointers can be disabled for hands but not controllers, and vice versa. void SetPointerBehavior(Handedness handedness, InputSourceType inputType, PointerBehavior pointerBehavior) where T : class, IMixedRealityPointer; /// /// Pointer behavior for the gaze pointer. /// We make gaze pointer unique because the internal /// gaze pointer actually cannot be referenced from here /// since it's an internal class. /// /// /// This does not control if the gaze provider is used for raycasting, just its use as an MRTK pointer. Set CoreServices.InputSystem.GazeProvider.Enabled /// to false if you do not wish to use Gaze data in your project /// PointerBehavior GazePointerBehavior { get; set; } } }