Class LocomotionProvider
Base for a behavior that implements a specific type of user locomotion. This behavior communicates with a LocomotionMediator to gain access to the mediator's XRBodyTransformer, which the provider can use to queue IXRBodyTransformations that move the user.
Inherited Members
Namespace: UnityEngine.XR.Interaction.Toolkit
Assembly: solution.dll
Syntax
[DefaultExecutionOrder(-210)]
public abstract class LocomotionProvider : MonoBehaviour
Properties
| Name | Description |
|---|---|
| canStartMoving | Whether the provider has finished preparing for locomotion and is ready to enter the Moving state. This only applies when locomotionState is Preparing, so there is no need for this implementation to query locomotionState. |
| isLocomotionActive | Whether the provider is actively preparing or performing locomotion. This is true when locomotionState is Preparing or Moving, false otherwise. |
| locomotionState | The current state of locomotion. The mediator determines this state based on the provider's requests for the XRBodyTransformer. |
| mediator | The behavior that this provider communicates with for access to the mediator's XRBodyTransformer. If one is not provided, this provider will attempt to locate one during its Awake() call. |
| transformationPriority | The queue order of this provider's transformations of the XR Origin. The lower the value, the earlier the transformations are applied. |
Methods
| Name | Description |
|---|---|
| Awake() | See MonoBehaviour. |
| OnLocomotionEnding() | Called when locomotion enters the Ended state, after the provider invokes locomotionEnded and before it loses access to the XRBodyTransformer. |
| OnLocomotionStarting() | Called when locomotion enters the Moving state, after the provider gains access to the XRBodyTransformer and before it invokes locomotionStarted. |
| TryEndLocomotion() | Attempts to transition this provider into the Ended state. This succeeds if isLocomotionActive was true when this was called. |
| TryPrepareLocomotion() | Attempts to transition this provider into the Preparing state. This succeeds if isLocomotionActive was false when this was called. |
| TryQueueTransformation(IXRBodyTransformation) | Attempts to queue a transformation to be applied during the active XRBodyTransformer's next Update(). The provider's transformationPriority determines when the transformation is applied in relation to others. The queue attempt only succeeds if the provider is in the Moving state. |
| TryQueueTransformation(IXRBodyTransformation, int) | Attempts to queue a transformation to be applied during the active XRBodyTransformer's next
Update(). The given |
| TryStartLocomotionImmediately() | Attempts to transition this provider into the Moving state. This succeeds if locomotionState was not already Moving when this was called. |
Events
| Name | Description |
|---|---|
| beforeStepLocomotion | Calls the methods in its invocation list just before the XRBodyTransformer applies this provider's transformation(s). This is invoked at most once per frame while locomotionState is Moving, and only if the provider has queued at least one transformation. |
| locomotionEnded | Calls the methods in its invocation list when the provider has entered the Ended state. |
| locomotionStarted | Calls the methods in its invocation list when the provider has entered the Moving state. |