UxrMapControllerToHand Class

UltimateXR has support for rendering avatars in ‘controllers mode’ (where the currently active controllers are rendered with optional hands on top) or full Avatar mode, where the actual visual representation of the user is rendered. ‘Controllers mode’ can be useful during tutorials or menus while the full Avatar mode will be used mainly for the core game/simulation. When we developed the big example scene we included a small gallery with all supported controllers so the user could grab and inspect them. But there was no link between the user input and how the hands and the controllers behaved (like the ‘controllers mode’). Since one of the coolest UltimateXR features is mapping user input to controllers and having IK drive the hands we also wanted to link the grabbing mechanics to this. In short, what we did was to add UxrControllerHand components to the regular avatar hands as well, and then at runtime link them to the currently grabbed controller and feed the avatar input. This way we are now able to not just grab to controller, but also see how the hand and the controller respond to the user input.

Inheritance Hierarchy

System.Object
  Object
    Component
      Behaviour
        MonoBehaviour
          UltimateXR.Core.Components.UxrComponent
            UltimateXR.Core.Components.UxrComponent(UxrMapControllerToHand)
              UltimateXR.Core.Components.Composite.UxrGrabbableObjectComponent(UxrMapControllerToHand)
                UltimateXR.Devices.Visualization.UxrMapControllerToHand
Namespace: UltimateXR.Devices.Visualization
Assembly: UltimateXR (in UltimateXR.dll) Version: 0.0.0.0

Syntax

C#

[RequireComponent(typeof(UxrGrabbableObject))]
public class UxrMapControllerToHand : UxrGrabbableObjectComponent<UxrMapControllerToHand>


The UxrMapControllerToHand type exposes the following members.

Constructors

NameDescription
Public methodUxrMapControllerToHand

Methods

NameDescription
Protected methodOnObjectGrabbed Called when the user grabs the controller. We bind the controller to the hand that grabbed it and subscribe to events. (Overrides UxrGrabbableObjectComponent<T>.OnObjectGrabbed(UxrManipulationEventArgs).)
Protected methodOnObjectPlaced Overridable event trigger method for the Placed event that can be used to handle it without requiring to subscribe/unsubscribe. (Overrides UxrGrabbableObjectComponent<T>.OnObjectPlaced(UxrManipulationEventArgs).)
Protected methodOnObjectReleased Overridable event trigger method for the Released event that can be used to handle it without requiring to subscribe/unsubscribe. (Overrides UxrGrabbableObjectComponent<T>.OnObjectReleased(UxrManipulationEventArgs).)
Protected methodStart Cache components. (Overrides UxrComponent.Start().)

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.Visualization Namespace