/// <summary> /// Sets the pointer behavior for pointer of type T, for all input types. /// </summary> /// <typeparam name="T">All pointer types that equal or derive from this type will be set.</typeparam> /// <param name="pointerBehavior">Desired <seealso cref="Microsoft.MixedReality.Toolkit.Input.PointerBehavior"/>.</param> /// <param name="handedness">Specify handedness to restrict to only right, left.</param> public static void SetPointerBehavior <T>(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) where T : class, IMixedRealityPointer { foreach (InputSourceType type in Enum.GetValues(typeof(InputSourceType))) { SetPointerBehavior <T>(pointerBehavior, type, handedness); } }
/// <summary> /// Sets the behavior for the given pointer type and input type. /// </summary> /// <typeparam name="T">All pointer types that equal or derive from this type will be set.</typeparam> /// <param name="pointerBehavior">Desired <seealso cref="Microsoft.MixedReality.Toolkit.Input.PointerBehavior"/>.</param> /// <param name="sourceType">Allows setting different behaviors for different input types (hands, controllers, etc.)</param> /// <param name="handedness">Specify handedness to restrict to only right, left.</param> public static void SetPointerBehavior <T>(PointerBehavior pointerBehavior, InputSourceType sourceType, Handedness handedness = Handedness.Any) where T : class, IMixedRealityPointer { if (CoreServices.InputSystem.FocusProvider is IPointerPreferences preferences) { preferences.SetPointerBehavior <T>(handedness, sourceType, pointerBehavior); } else { WarnAboutSettingCustomPointerBehaviors(); } }
/// <summary> /// Sets the behavior for the gaze pointer. /// </summary> /// <param name="pointerBehavior">Desired <seealso cref="Microsoft.MixedReality.Toolkit.Input.PointerBehavior"/>.</param> public static void SetGazePointerBehavior(PointerBehavior pointerBehavior) { if (CoreServices.InputSystem.FocusProvider is IPointerPreferences pointerPreferences) { pointerPreferences.GazePointerBehavior = pointerBehavior; foreach (InputSourceType sourceType in Enum.GetValues(typeof(InputSourceType))) { pointerPreferences.SetPointerBehavior <GGVPointer>(Handedness.Any, sourceType, pointerBehavior); } } else { WarnAboutSettingCustomPointerBehaviors(); } }
/// <summary> /// Toggles a pointer's "enabled" behavior. If a pointer's <see cref="Microsoft.MixedReality.Toolkit.Input.PointerBehavior"/> is Default or AlwaysOn, /// set it to AlwaysOff. Otherwise, set the pointer's behavior to Default. /// Will set this state for all matching pointers. /// </summary> /// <typeparam name="T">Type of pointer to set</typeparam> /// <param name="inputType">Input type of pointer to set</param> public void TogglePointerEnabled <T>(InputSourceType inputType) where T : class, IMixedRealityPointer { PointerBehavior oldBehavior = PointerUtils.GetPointerBehavior <T>(Handedness.Any, inputType); PointerBehavior newBehavior; if (oldBehavior == PointerBehavior.AlwaysOff) { newBehavior = PointerBehavior.Default; } else { newBehavior = PointerBehavior.AlwaysOff; } PointerUtils.SetPointerBehavior <T>(newBehavior, inputType); }
private void ApplyPointerBehavior(IMixedRealityPointer pointer, PointerBehavior behavior) { if (behavior == PointerBehavior.Default) { return; } bool isPointerOn = behavior == PointerBehavior.AlwaysOn; pointer.IsActive = isPointerOn; if (pointer is GenericPointer genericPtr) { genericPtr.IsInteractionEnabled = isPointerOn; } unassignedPointers.Remove(pointer); }
/// <summary> /// Sets the behavior for the poke pointer with given handedness. /// </summary> /// <param name="pointerBehavior">Desired <seealso cref="Microsoft.MixedReality.Toolkit.Input.PointerBehavior"/>.</param> /// <param name="handedness">Specify handedness to restrict to only right, left.</param> public static void SetHandPokePointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) { SetPointerBehavior <PokePointer>(pointerBehavior, InputSourceType.Hand, handedness); }
/// <summary> /// Sets the behavior for the motion controller ray with given handedness /// </summary> /// <param name="pointerBehavior">Desired <seealso cref="Microsoft.MixedReality.Toolkit.Input.PointerBehavior"/>.</param> /// <param name="handedness">Specify handedness to restrict to only right, left.</param> public static void SetMotionControllerRayPointerBehavior(PointerBehavior pointerBehavior, Handedness handedness = Handedness.Any) { SetPointerBehavior <ShellHandRayPointer>(pointerBehavior, InputSourceType.Controller, handedness); }