Class XRLegacyGrabTransformer
Grab transformer used when attachPointCompatibilityMode is set to Legacy. This is for backwards compatibility purpose for old projects. Marked for deprecation, this component will be removed in a future version.
Inheritance
Inherited Members
Namespace: UnityEngine.XR.Interaction.Toolkit.Transformers
Syntax
[AddComponentMenu("")]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@2.2/api/UnityEngine.XR.Interaction.Toolkit.Transformers.XRLegacyGrabTransformer.html")]
[Obsolete("XRLegacyGrabTransformer has been deprecated, use XRSingleFreeGrabTransformer instead.")]
public sealed class XRLegacyGrabTransformer : XRBaseGrabTransformer, IXRGrabTransformer
Methods
OnGrabCountChanged(XRGrabInteractable, Pose, Vector3)
Called by Unity each time the number of selections changes for the given Interactable while grabbed by at least one Interactor, including when it is first grabbed. Use this to do any code initialization based on each Interactor currently selecting the Interactable, for example computing the initial distance between both Interactors grabbing the object.
Declaration
public override void OnGrabCountChanged(XRGrabInteractable grabInteractable, Pose targetPose, Vector3 localScale)
Parameters
Type | Name | Description |
---|---|---|
XRGrabInteractable | grabInteractable | The XR Grab Interactable being grabbed. |
Pose | targetPose | The current target pose for the current frame. |
Vector3 | localScale | The current scale of the Interactable's transform relative to the GameObjects parent. |
Overrides
Remarks
There will always be at least one Interactor selecting the Interactable when this method is called.
In other words, this will be called when the selection count changes from 0
to 1
and whenever it subsequently changes while still above 0
.
This method is called by Unity right before Process(XRGrabInteractable, XRInteractionUpdateOrder.UpdatePhase, ref Pose, ref Vector3) if the selection count changed.
grabInteractable.interactorsSelecting.Count
OnLink(XRGrabInteractable)
Called by Unity when the given Interactable links to this grab transformer. Use this to do any code initialization for the given Interactable.
Declaration
public override void OnLink(XRGrabInteractable grabInteractable)
Parameters
Type | Name | Description |
---|---|---|
XRGrabInteractable | grabInteractable | The XR Grab Interactable being linked to this transformer. |
Overrides
See Also
Process(XRGrabInteractable, XRInteractionUpdateOrder.UpdatePhase, ref Pose, ref Vector3)
Called by the linked Interactable to calculate the target pose and scale.
Modify the value of targetPose
and/or localScale
(or neither).
Declaration
public override void Process(XRGrabInteractable grabInteractable, XRInteractionUpdateOrder.UpdatePhase updatePhase, ref Pose targetPose, ref Vector3 localScale)
Parameters
Type | Name | Description |
---|---|---|
XRGrabInteractable | grabInteractable | The XR Grab Interactable to calculate the target pose and scale for. |
XRInteractionUpdateOrder.UpdatePhase | updatePhase | The update phase this is called during. |
Pose | targetPose | The target pose for the current frame. |
Vector3 | localScale | The scale of the Interactable's transform relative to the GameObjects parent. |
Overrides
Remarks
When there is more than one linked grab transformer that can process, the updated value of each ref parameter
is passed to each in series according to its order in the list. You can utilize this by, for example,
having the first grab transformer compute the target pose, and the second compute just the scale.
if (grabInteractable.interactorsSelecting.Count < 2) return;