UxrUnityXRControllerInput Class

Generic base class for left-right input devices that can be handled through the new generic Unity XR input interface. Before, we had to manually support each SDK individually.

Inheritance Hierarchy

System.Object
  Object
    Component
      Behaviour
        MonoBehaviour
          UltimateXR.Core.Components.UxrComponent
            UltimateXR.Core.Components.UxrComponent(UxrControllerInput)
              UltimateXR.Core.Components.Composite.UxrAvatarComponent(UxrControllerInput)
                UltimateXR.Devices.UxrControllerInput
                  UltimateXR.Devices.Integrations.UxrUnityXRControllerInput
                    More… Namespace: UltimateXR.Devices.Integrations
Assembly: UltimateXR (in UltimateXR.dll) Version: 0.0.0.0

Syntax

C#

public abstract class UxrUnityXRControllerInput : UxrControllerInput


The UxrUnityXRControllerInput type exposes the following members.

Constructors

NameDescription
Protected methodUxrUnityXRControllerInput

Properties

NameDescription
Public propertyControllerNames Gets list of controller names that the component can handle
Public propertyForceUseAlways We use this when we are implementing new controllers that we don’t know the name of, in order to show the controller names in the UxrDebugControllerPanel. Returning true will register the controllers in InputDevices_DeviceConnected(InputDevice) no matter which input device gets connected. Then using the UxrDebugControllerPanel we can see which devices got connected. This is mostly useful for untethered devices that cannot be tested directly in Unity.
Public propertyLeftControllerName Gets the left controller name, or empty if not connected / doesn’t exist. In Single configurations where IsHandednessSupported is not available, both sides will return the same name. (Overrides UxrControllerInput.LeftControllerName.)
Public propertyRightControllerName Gets the right controller name, or empty if not connected / doesn’t exist. In Single configurations where IsHandednessSupported is not available, both sides will return the same name. (Overrides UxrControllerInput.RightControllerName.)

Methods

NameDescription
Protected methodAwake Initializes variables and subscribes to events. If the controllers were already initialized, enables the component. Otherwise it begins disabled until devices are connected. (Overrides UxrControllerInput.Awake().)
Protected methodCreateHapticBufferFromAudioClip Using an audio file, creates a haptic samples buffer that can be sent for feedback. This code is based on the Oculus SDK (OVRHaptics.cs).
Public methodGetControllerCapabilities Gets the capabilities of the XR controller. (Overrides UxrControllerInput.GetControllerCapabilities(UxrHandSide).)
Public methodGetInput1D Gets the state of an analog controller input element. (Overrides UxrControllerInput.GetInput1D(UxrHandSide, UxrInput1D, Boolean).)
Public methodGetInput2D Gets the state of a 2D input element (joystick, touchpad…). (Overrides UxrControllerInput.GetInput2D(UxrHandSide, UxrInput2D, Boolean).)
Protected methodGetInputDevice Gets the input device interface in Unity’s input system for a given hand. Usually if it is a left+right setup it will give a list with a single entry but the system is very generic so it is prepared to handle different setups. Normally we get the list and just use the first entry if available.
Public methodIsControllerEnabled Checks whether the given controller is enabled. (Overrides UxrControllerInput.IsControllerEnabled(UxrHandSide).)
Protected methodOnDestroy Unsubscribes from device events. (Overrides UxrControllerInput.OnDestroy().)
Public methodSendHapticFeedback(UxrHandSide, UxrHapticClip) Sends haptic feedback to a controller if the controller supports it. (Overrides UxrControllerInput.SendHapticFeedback(UxrHandSide, UxrHapticClip).)
Public methodSendHapticFeedback(UxrHandSide, Single, Single, Single, UxrHapticMode) Sends haptic feedback to a controller if the controller supports it. (Overrides UxrControllerInput.SendHapticFeedback(UxrHandSide, Single, Single, Single, UxrHapticMode).)
Public methodStopHapticFeedback Stops all current haptics in a given controller. (Overrides UxrControllerInput.StopHapticFeedback(UxrHandSide).)
Protected methodUpdateInput Updates the input state. This should not be called by the user since it is called by the framework already. (Overrides UxrControllerInput.UpdateInput().)

Extension Methods

NameDescription
Public Extension MethodCheckSetEnabled Enables/disabled the component if it isn’t enabled already. (Defined by MonoBehaviourExt.)
Public Extension MethodGetOrAddComponent<T> Gets the Component of a given type. If it doesn’t exist, it is added to the GameObject. (Defined by ComponentExt.)
Public Extension MethodGetPathUnderScene Gets the full path under current scene, including all parents, but scene name, for the given component. (Defined by ComponentExt.)
Public Extension MethodGetSceneUid Gets an unique identifier string for the given component. (Defined by ComponentExt.)
Public Extension MethodGetUniqueScenePath Gets an unique path in the scene for the given component. It will include scene name, sibling and component indices to make it unique. (Defined by ComponentExt.)
Public Extension MethodLoopCoroutine Creates a coroutine that simplifies executing a loop during a certain amount of time. (Defined by MonoBehaviourExt.)
Public Extension MethodSafeGetComponentInParent<T> Gets the Component of a given type in the GameObject or any of its parents. It also works on prefabs, where regular GetComponentInParent(Type, Boolean) will not work: https://issuetracker.unity3d.com/issues/getcomponentinparent-is-returning-null-when-the-gameobject-is-a-prefab (Defined by ComponentExt.)
Public Extension MethodShowInInspector(Boolean)Overloaded.
Controls whether to show the current object in the inspector. (Defined by ObjectExt.)
Public Extension MethodShowInInspector(Boolean, Boolean)Overloaded.
Controls whether to show the current object in the inspector and whether it is editable. (Defined by ObjectExt.)
Public Extension MethodThrowIfNull Throws an exception if the object is null. (Defined by ObjectExt.)

See Also

Reference

UltimateXR.Devices.Integrations Namespace

Inheritance HierarchySystem.Object
  Object
    Component
      Behaviour
        MonoBehaviour
          UltimateXR.Core.Components.UxrComponent
            UltimateXR.Core.Components.UxrComponent(UxrControllerInput)
              UltimateXR.Core.Components.Composite.UxrAvatarComponent(UxrControllerInput)
                UltimateXR.Devices.UxrControllerInput
                  UltimateXR.Devices.Integrations.UxrUnityXRControllerInput
                    UltimateXR.Devices.Integrations.HTC.UxrHtcViveFocus3Input
                    UltimateXR.Devices.Integrations.Meta.UxrMetaTouchQuest2Input
                    UltimateXR.Devices.Integrations.Microsoft.UxrWindowsMixedRealityInput
                    UltimateXR.Devices.Integrations.Oculus.UxrOculusTouchRiftInput
                    UltimateXR.Devices.Integrations.Oculus.UxrOculusTouchRiftSQuestInput
                    UltimateXR.Devices.Integrations.Pico.UxrPicoNeo3Input