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
Name | Description | |
---|---|---|
UxrMapControllerToHand |
Methods
Name | Description | |
---|---|---|
OnObjectGrabbed | 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).) | |
OnObjectPlaced | 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).) | |
OnObjectReleased | 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).) | |
Start | Cache components. (Overrides UxrComponent.Start().) |
Extension Methods
Name | Description | |
---|---|---|
CheckSetEnabled | Enables/disabled the component if it isn’t enabled already. (Defined by MonoBehaviourExt.) | |
GetOrAddComponent<T> | Gets the Component of a given type. If it doesn’t exist, it is added to the GameObject. (Defined by ComponentExt.) | |
GetPathUnderScene | Gets the full path under current scene, including all parents, but scene name, for the given component. (Defined by ComponentExt.) | |
GetSceneUid | Gets an unique identifier string for the given component. (Defined by ComponentExt.) | |
GetUniqueScenePath | 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.) | |
LoopCoroutine | Creates a coroutine that simplifies executing a loop during a certain amount of time. (Defined by MonoBehaviourExt.) | |
SafeGetComponentInParent<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.) | |
ShowInInspector(Boolean) | Overloaded. Controls whether to show the current object in the inspector. (Defined by ObjectExt.) | |
ShowInInspector(Boolean, Boolean) | Overloaded. Controls whether to show the current object in the inspector and whether it is editable. (Defined by ObjectExt.) | |
ThrowIfNull | Throws an exception if the object is null. (Defined by ObjectExt.) |