### Start Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement.ContinuousMoveProvider.html Unity's Start method, called on the frame when a script is enabled just before any of the Update methods are called the first time. ```csharp protected void Start() { } ``` -------------------------------- ### Start Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRBaseInteractor.html See MonoBehaviour. ```APIDOC ## Start() ### Description See MonoBehaviour. ### Method `protected virtual void Start()` ``` -------------------------------- ### ARTransformer Start() Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Transformers.ARTransformer.html The Start() method is called by Unity just before the first frame update. This is an override of the Start() method from the XRBaseGrabTransformer class. ```APIDOC ## Start() ### Description This function is called just before any of the Update methods is called the first time. It overrides the Start() method from XRBaseGrabTransformer. ### Declaration ```csharp protected override void Start() ``` ### Overrides XRBaseGrabTransformer.Start() ### Implements IXRDropTransformer IXRGrabTransformer ### See Also - XRRayInteractor ``` -------------------------------- ### XRBaseGrabTransformer Process Method Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Transformers.XRBaseGrabTransformer.html Example demonstrating how to check the number of selecting interactors before proceeding in the Process method. This is useful if your transformer requires multiple selections. ```csharp if (grabInteractable.interactorsSelecting.Count < 2) return; ``` -------------------------------- ### Start Method Declaration Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedHandPlaybackManager.html Declaration for the Start method, inherited from MonoBehaviour. ```csharp protected virtual void Start() ``` -------------------------------- ### Start Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRBaseInteractor.html Called when the interactor is starting. Inherits functionality from MonoBehaviour. ```csharp protected virtual void Start() { } ``` -------------------------------- ### Namespace Change Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/manual/upgrade-guide-3.0.html Illustrates how a namespace change from UnityEngine.XR.Interaction.Toolkit to UnityEngine.XR.Interaction.Toolkit.Interactables affects a script. This example shows the direct inline namespace addition. ```csharp XRBaseInteractable m_Interactable; ``` ```csharp UnityEngine.XR.Interaction.Toolkit.Interactables.XRBaseInteractable m_Interactable; ``` -------------------------------- ### XRSimulatedController Methods Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.XRSimulatedController.html Provides methods for executing commands and finishing controller setup. ```APIDOC ## XRSimulatedController Methods ### `ExecuteCommand(InputDeviceCommand*)` Executes a given input device command. #### Declaration ``` protected override long ExecuteCommand(InputDeviceCommand* commandPtr) ``` #### Parameters - **commandPtr** (InputDeviceCommand*) - The command to execute. #### Returns - **long** - The result of the command execution. #### Overrides InputDevice.ExecuteCommand(InputDeviceCommand*) ### `FinishSetup()` Finishes setting up all the input values for the controller. #### Declaration ``` protected override void FinishSetup() ``` #### Overrides XRController.FinishSetup() ``` -------------------------------- ### Start Width Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.LineProperties.html Sets the width of the line at its starting point. This property is essential for defining the overall shape and thickness of the line. ```csharp public float startWidth { get; set; } ``` -------------------------------- ### Get Twist Start Position 2 Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Returns the screen position of the second finger when a twist gesture started. This is a read-only property. ```csharp public Vector2Control twistStartPosition2 { get; } ``` -------------------------------- ### FinishSetup() Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Finishes setting up all the input values for the controller. ```APIDOC ## FinishSetup() ### Description Finishes setting up all the input values for the controller. ### Method protected override void FinishSetup() ### Overrides XRController.FinishSetup() ``` -------------------------------- ### Get Twist Start Position 1 Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Returns the screen position of the first finger when a twist gesture started. This is a read-only property. ```csharp public Vector2Control twistStartPosition1 { get; } ``` -------------------------------- ### Get Number of Interactors Selecting Interactable Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Transformers.XRSocketGrabTransformer.html Example demonstrating how to get the number of interactors currently selecting an interactable within the OnGrabCountChanged method. ```csharp grabInteractable.interactorsSelecting.Count ``` -------------------------------- ### FollowPreset Methods Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPreset.html Contains methods for applying preset configurations, computing thresholds, and retrieving reference axes for UI following behavior. ```APIDOC ## Methods ### ApplyPreset(Transform, Transform) Applies this preset to the specified tracking offsets for the left and right local positions and rotations. Also recomputes dot product thresholds. ```csharp public void ApplyPreset(Transform leftTrackingOffset, Transform rightTrackingOffset) ``` #### Parameters - **leftTrackingOffset** (Transform) - The Transform object that represents the left tracking offset. - **rightTrackingOffset** (Transform) - The Transform object that represents the right tracking offset. ### ComputeDotProductThresholds() Update the dot product thresholds based on the current angle thresholds. ```csharp public void ComputeDotProductThresholds() ``` ### GetReferenceAxisForTrackingAnchor(Transform, bool) Gets the reference axis relative to the specified tracking root. Adjusts the return value depending on whether or not this is for the user's right hand. ```csharp public Vector3 GetReferenceAxisForTrackingAnchor(Transform trackingRoot, bool isRightHand) ``` #### Parameters - **trackingRoot** (Transform) - Tracking root Transform. - **isRightHand** (bool) - Whether this is for the user's right hand or not. ``` -------------------------------- ### TryPrepareLocomotion Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionProvider.html Attempts to transition the provider to the Preparing state. This succeeds only if locomotion is not currently active. ```csharp protected bool TryPrepareLocomotion() ``` -------------------------------- ### DragGesture StartPosition Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.DragGesture.html Gets the screen position where the drag gesture started. ```csharp public Vector2 startPosition { get; } ``` -------------------------------- ### TrackedDeviceModel Position Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.TrackedDeviceModel.html Sets or gets the world-space starting position of the cast for the tracked device. ```csharp public Vector3 position { get; set; } ``` -------------------------------- ### Gesture OnStart() Abstract Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Gesture-1.html Abstract method called automatically when a gesture begins. Derived classes implement this to initialize gesture-specific logic. ```csharp protected abstract void OnStart() ``` -------------------------------- ### SetupRigidbodyDrop Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactables.XRGrabInteractable.html Set up the Rigidbody on this object due to being dropped. Automatically called when exiting the Select state. ```APIDOC ## SetupRigidbodyDrop(Rigidbody) ### Description Set up the Rigidbody on this object due to being dropped. Automatically called when exiting the Select state. ### Method protected virtual void SetupRigidbodyDrop(Rigidbody rigidbody) ### Parameters #### Path Parameters - **rigidbody** (Rigidbody) - Description: The Rigidbody on this object. ``` -------------------------------- ### XRRayInteractor rayOriginTransform Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRRayInteractor.html Sets or gets the starting position and direction of any ray casts. It is automatically initialized if null. ```csharp public Transform rayOriginTransform { get; set; } ``` -------------------------------- ### Setup Rigidbody Grab Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactables.XRGrabInteractable.html Sets up the Rigidbody for grabbing. Automatically called when entering the Select state. Derived classes should call the base method. ```csharp protected virtual void SetupRigidbodyGrab(Rigidbody rigidbody) ``` -------------------------------- ### Get Tap Start Position Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Returns the screen position where the tap gesture began. This is a read-only property. ```csharp public Vector2Control tapStartPosition { get; } ``` -------------------------------- ### TwistGesture startPosition2 Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.TwistGesture.html Gets the screen position of the second finger where the twist gesture started. This property is read-only. ```csharp public Vector2 startPosition2 { get; } ``` -------------------------------- ### FinishSetup Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Completes the initialization of all input values for the controller. This method overrides the base XRController.FinishSetup(). ```csharp protected override void FinishSetup() { } ``` -------------------------------- ### TwistGesture startPosition1 Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.TwistGesture.html Gets the screen position of the first finger where the twist gesture started. This property is read-only. ```csharp public Vector2 startPosition1 { get; } ``` -------------------------------- ### Get Pinch Start Position 2 Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Retrieves the screen position where the second finger initiated a pinch gesture. This is a read-only property. ```csharp public Vector2Control pinchStartPosition2 { get; } ``` -------------------------------- ### SetupRigidbodyGrab Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactables.XRGrabInteractable.html Sets up the Rigidbody on this object when it is grabbed. This method is automatically called when entering the Select state. ```APIDOC ## SetupRigidbodyGrab(Rigidbody) ### Description Set up the Rigidbody on this object due to being grabbed. Automatically called when entering the Select state. ### Method protected virtual void SetupRigidbodyGrab(Rigidbody rigidbody) ### Parameters #### Path Parameters - **rigidbody** (Rigidbody) - The Rigidbody on this object. ### Remarks This method can also be re-triggered after the initial grab when the effective movement type changes while grabbed. This can happen when multi-selected as additional interactors select or deselect this interactable when the interactors override the movement type, or when the movement type property is changed while selected. Users overriding this method in a derived class should call the base method to ensure proper setup as not doing so would prevent SetupRigidbodyDrop(Rigidbody) from being invoked again. ### See Also - SetupRigidbodyDrop(Rigidbody) ``` -------------------------------- ### Get Two Finger Drag Start Position 2 Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Returns the screen position of the second finger when the two-finger drag gesture began. This is a read-only property. ```csharp public Vector2Control twoFingerDragStartPosition2 { get; } ``` -------------------------------- ### StartClimbGrab Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.Climbing.ClimbProvider.html Initiates a grab for climbing, using the specified interactable and interactor to drive movement. Sets the locomotion phase to Started. ```csharp public void StartClimbGrab(ClimbInteractable climbInteractable, IXRSelectInteractor interactor) ``` -------------------------------- ### Get Two Finger Drag Start Position 1 Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Returns the screen position of the first finger when the two-finger drag gesture began. This is a read-only property. ```csharp public Vector2Control twoFingerDragStartPosition1 { get; } ``` -------------------------------- ### TwoFingerDragGestureRecognizer Angle Threshold Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.TwoFingerDragGestureRecognizer.html Sets or gets the maximum angle in radians between the paths of two fingers for a two-finger drag gesture to be recognized as started. This helps filter out minor finger movements that are not intended as gestures. ```csharp public float angleThresholdRadians { get; set; } ``` -------------------------------- ### Start Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Transformers.XRBaseGrabTransformer.html This function is called just before any of the Update methods is called the first time. See MonoBehaviour. ```APIDOC ## Start() ### Description This function is called just before any of the Update methods is called the first time. See MonoBehaviour. ### Method Signature ```csharp protected virtual void Start() ``` ### See Also - IXRGrabTransformer ``` -------------------------------- ### Start Locomotion Immediately Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionProvider.html Attempts to transition the provider into the Moving state, bypassing the canStartMoving check. This method invokes locomotionStarted and grants access to the XRBodyTransformer. ```csharp protected bool TryStartLocomotionImmediately() ``` -------------------------------- ### Get Attach Transform Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactables.XRGrabInteractable.html Gets the attachment point Transform for a given Interactor. Overrides XRBaseInteractable.GetAttachTransform(IXRInteractor). ```csharp public override Transform GetAttachTransform(IXRInteractor interactor) ``` -------------------------------- ### Gesture CanStart() Abstract Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Gesture-1.html Abstract method that must be implemented by derived classes to determine if a gesture can begin. ```csharp protected abstract bool CanStart() ``` -------------------------------- ### Manual Installation of XR Interaction Toolkit Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/manual/installation.html Add or update the XR Interaction Toolkit to version 3.5.0 in your project's manifest.json file. Ensure correct JSON formatting with commas. ```json "com.unity.xr.interaction.toolkit": "3.5.0" ``` -------------------------------- ### Setup Rigidbody Drop Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactables.XRGrabInteractable.html Sets up the Rigidbody on this object due to being dropped. Automatically called when exiting the Select state. ```csharp protected virtual void SetupRigidbodyDrop(Rigidbody rigidbody) ``` -------------------------------- ### ContinuousMoveProvider Methods Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement.ContinuousMoveProvider.html Contains methods for initializing the provider and calculating/applying movement based on input and gravity. ```csharp protected override void Awake() ``` ```csharp protected virtual Vector3 ComputeDesiredMove(Vector2 input) ``` ```csharp protected virtual void MoveRig(Vector3 translationInWorldSpace) ``` -------------------------------- ### Get Two Finger Drag Current Position Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html Gets the current screen coordinates of the two-finger drag gesture. This is a read-only property. ```csharp public Vector2Control twoFingerDragCurrentPosition { get; } ``` -------------------------------- ### Start Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Gaze.XRGazeAssistance.html Unity lifecycle method called on the frame when a component is enabled. See MonoBehaviour documentation. ```csharp protected void Start() ``` -------------------------------- ### XRInputHapticImpulseProvider Constructor with Parameters Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Haptics.XRInputHapticImpulseProvider.html Initializes a new instance of the XRInputHapticImpulseProvider class with specified parameters for name, initial state check, and input source mode. ```csharp public XRInputHapticImpulseProvider(string name = null, bool wantsInitialStateCheck = false, XRInputHapticImpulseProvider.InputSourceMode inputSourceMode = InputSourceMode.InputActionReference) ``` -------------------------------- ### Example: Checking if an Interactable is Focused Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactables.IXRFocusInteractable.html A concise example demonstrating how to check if an interactable is currently being focused by any interaction group by examining the count of the 'interactionGroupsFocusing' list. ```csharp interactionGroupsFocusing.Count > 0 ``` -------------------------------- ### Interactor Registered Event Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.InteractableSnapVolumeUnregisteredEventArgs.html Logs a message when a specific interactor is registered. This example shows how to cast the interactor object and check for a specific interactor. ```csharp void OnInteractorRegistered(InteractorRegisteredEventArgs args) { // Example of casting args objects to interactor base class var interactor = args.interactorObject as XRBaseInteractor; // Logic for interactor registered event goes here if (interactor != null && interactor == m_ExampleInteractor) Debug.Log(args.interactorObject.transform.name + " is registered with " + args.manager.transform.name, this); } ``` -------------------------------- ### FollowPreset Returns Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPreset.html Details the return type and description for methods within the FollowPreset class. ```APIDOC ## Returns Type | Description ---|--- Vector3 | Returns a Vector3 representing the reference axis relative to the specified tracking root. ``` -------------------------------- ### XRBaseGrabTransformer Start Method Declaration Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Transformers.XRBaseGrabTransformer.html Protected virtual method declaration for the Start method in XRBaseGrabTransformer. This method is called just before any of the Update methods are called the first time. ```csharp protected virtual void Start() ``` -------------------------------- ### XRInteractionSimulatorLoader Initialize Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.XRInteractionSimulatorLoader.html The Initialize method is a static entry point that is automatically called by Unity after a scene has been loaded. It is responsible for setting up the XR interaction simulator. ```csharp [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)] [Preserve] public static void Initialize() ``` -------------------------------- ### On Enable Event Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRSocketInteractor.html Handles initialization and setup when the XRSocketInteractor is enabled. This method overrides the base class implementation. ```csharp protected override void OnEnable() { // Implementation details } ``` -------------------------------- ### Add Starting Interaction Override Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRInteractionGroup.html Adds an interaction override for a group member that is applied on Awake. Both members must already be in the starting group members list. ```csharp public void AddStartingInteractionOverride(Object sourceGroupMember, Object overrideGroupMember) ``` -------------------------------- ### FollowPresetDatum Class Syntax Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPresetDatum.html Shows the C# syntax for the FollowPresetDatum class, including its inheritance and attributes for asset creation and help URL. ```csharp [CreateAssetMenu(fileName = "Follow Preset Datum", menuName = "XR/Value Datums/Body UI Follow Preset Datum", order = 0)] [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPresetDatum.html")] public class FollowPresetDatum : Datum ``` -------------------------------- ### IConstrainedXRBodyManipulator Interface Documentation Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.IConstrainedXRBodyManipulator.html Provides documentation for the IConstrainedXRBodyManipulator interface, detailing its properties and methods for constrained body manipulation in XR. ```APIDOC ## Interface IConstrainedXRBodyManipulator Interface for an object that can perform movement of an XRMovableBody that is constrained by collision based on where the user's body is. **Namespace**: UnityEngine.XR.Interaction.Toolkit.Locomotion **Assembly**: Unity.XR.Interaction.Toolkit.dll ### Properties #### isGrounded Whether the linkedBody is touching the ground, as of the most recent call to MoveBody(Vector3). - **Type**: bool - **Description**: Indicates if the body is grounded. #### lastCollisionFlags Flags indicating the direction of the collision from the most recent call to MoveBody(Vector3). - **Type**: CollisionFlags - **Description**: Flags indicating collision directions. #### linkedBody The body whose originTransform to move. - **Type**: XRMovableBody - **Description**: The XRMovableBody linked to this manipulator. ### Methods #### MoveBody(Vector3) Applies the given motion to linkedBody. A collision can constrain the movement from taking place. - **Parameters**: - **motion** (Vector3) - Required - Amount of translation to apply. - **Returns**: - **CollisionFlags** - Flags that indicate the direction of the collision, if there was one. #### OnLinkedToBody(XRMovableBody) Called after the given body links this manipulator to it. The implementation should ensure that linkedBody points to `body` after this method is called. - **Parameters**: - **body** (XRMovableBody) - Required - The body linked with this manipulator. #### OnUnlinkedFromBody() Called when a body unlinks this manipulator from it. The implementation should ensure that linkedBody returns null after this method is called. ### See Also - CharacterControllerBodyManipulator ``` -------------------------------- ### Interactable Unregistered Event Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.InteractableSnapVolumeUnregisteredEventArgs.html Logs a message when a specific interactable is unregistered. This example demonstrates casting the interactable object to its base class and performing a comparison. ```csharp void OnInteractableUnregistered(InteractableUnregisteredEventArgs args) { // Example of casting args objects to interactable base class var interactable = args.interactableObject as XRBaseInteractable; // Logic for interactable unregistered event goes here if (interactable != null && interactable == m_ExampleInteractable) Debug.Log(args.interactableObject.transform.name + " is unregistered with " + args.manager.transform.name, this); } ``` -------------------------------- ### Interactable Registered Event Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.InteractableSnapVolumeUnregisteredEventArgs.html Logs a message when a specific interactable is registered. This example demonstrates casting the interactable object to its base class and performing a comparison. ```csharp void OnInteractableRegistered(InteractableRegisteredEventArgs args) { // Example of casting args objects to interactable base class var interactable = args.interactableObject as XRBaseInteractable; // Logic for interactable registered event goes here if (interactable != null && interactable == m_ExampleInteractable) Debug.Log(args.interactableObject.transform.name + " is registered with " + args.manager.transform.name, this); } ``` -------------------------------- ### SnapTurnProvider StartTurn Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.Turning.SnapTurnProvider.html Initiates the snap turning locomotion with a specified amount. This protected method is used internally to begin the turn. ```csharp protected void StartTurn(float amount) ``` -------------------------------- ### Interactor Unregistered Event Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.InteractableSnapVolumeUnregisteredEventArgs.html Logs a message when a specific interactor is unregistered. This example includes casting the interactor object to its base class and checking for a specific interactor. ```csharp void OnInteractorUnregistered(InteractorUnregisteredEventArgs args) { // Example of casting args objects to interactor base class var interactor = args.interactorObject as XRBaseInteractor; // Logic for interactor unregistered event goes here if (interactor != null && interactor == m_ExampleInteractor) Debug.Log(args.interactorObject.transform.name + " is unregistered with " + args.manager.transform.name, this); } ``` -------------------------------- ### Initialize XRControllerState Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.XRControllerState.html Initializes and returns a new instance of the XRControllerState class. This is the default constructor. ```csharp public XRControllerState() ``` -------------------------------- ### PinchGesture Overridden Methods Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.PinchGesture.html Overrides base gesture methods to implement specific logic for pinch gestures, including checking if a gesture can start, handling cancellation, finishing, and starting. ```csharp protected override bool CanStart() { } ``` ```csharp protected override void OnCancel() { } ``` ```csharp protected override void OnFinish() { } ``` ```csharp protected override void OnStart() { } ``` -------------------------------- ### HoverEnterEventArgs Implementation Example Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.BaseInteractionEventArgs.html Demonstrates how to implement a custom event argument class, HoverEnterEventArgs, by inheriting from BaseInteractionEventArgs. This example shows how to override properties to specifically handle hover interactions. ```csharp public class HoverEnterEventArgs : BaseInteractionEventArgs { /// /// The Interactor associated with the interaction event. /// public new IXRHoverInteractor interactorObject { get => (IXRHoverInteractor)base.interactorObject; set => base.interactorObject = value; } /// /// The Interactable associated with the interaction event. /// public new IXRHoverInteractable interactableObject { get => (IXRHoverInteractable)base.interactableObject; set => base.interactableObject = value; } /// /// The Interaction Manager associated with the interaction event. /// public XRInteractionManager manager { get; set; } } ``` -------------------------------- ### FollowPresetDatumProperty Constructors Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPresetDatumProperty.html Provides constructors for initializing a FollowPresetDatumProperty with either a FollowPreset value or a FollowPresetDatum. ```APIDOC ## FollowPresetDatumProperty(FollowPreset) Class used as a serialized field in a component for containing a typed value that is either directly serialized as a constant value or a reference to a ScriptableObject container for that data. ### Declaration ``` public FollowPresetDatumProperty(FollowPreset value) ``` ### Parameters | Type | Name | Description | |---|---|---| | FollowPreset | value | | ### See Also Datum ## FollowPresetDatumProperty(FollowPresetDatum) Class used as a serialized field in a component for containing a typed value that is either directly serialized as a constant value or a reference to a ScriptableObject container for that data. ### Declaration ``` public FollowPresetDatumProperty(FollowPresetDatum datum) ``` ### Parameters | Type | Name | Description | |---|---|---| | FollowPresetDatum | datum | | ### See Also Datum ``` -------------------------------- ### Initialize XRControllerState with Basic Tracking Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.XRControllerState.html Initializes and returns an instance of XRControllerState with time, position, rotation, input tracking state, and tracked status. ```csharp protected XRControllerState(double time, Vector3 position, Quaternion rotation, InputTrackingState inputTrackingState, bool isTracked) ``` -------------------------------- ### XRInputValueReader Constructors Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Readers.XRInputValueReader.html Provides information on how to initialize instances of the XRInputValueReader class. ```APIDOC ## XRInputValueReader() ### Description Initializes and returns an instance of XRInputValueReader. ### Declaration ```csharp protected XRInputValueReader() ``` ### See Also XRInputValueReader ``` ```APIDOC ## XRInputValueReader(InputAction, InputSourceMode) ### Description Initializes and returns an instance of XRInputValueReader. ### Declaration ```csharp protected XRInputValueReader(InputAction inputAction, XRInputValueReader.InputSourceMode inputSourceMode) ``` ### Parameters #### Path Parameters - **inputAction** (InputAction) - Required - The directly serialized embedded input action. - **inputSourceMode** (XRInputValueReader.InputSourceMode) - Required - The initial input source mode. ### See Also XRInputValueReader ``` -------------------------------- ### DragGestureRecognizer SlopInches Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.DragGestureRecognizer.html Defines the maximum distance in inches a user's touch can move from the starting point before a drag gesture is considered to have started. This helps in filtering out minor accidental movements. ```csharp public float slopInches { get; set; } ``` -------------------------------- ### Get Attach Point Velocity Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Attachment.AttachPointVelocityProviderExtensions.html Retrieves the current linear velocity of the attachment point, transformed by the XR Origin. Use this to get the translational speed of an attached object relative to the XR Origin. ```csharp public static Vector3 GetAttachPointVelocity(this IAttachPointVelocityProvider provider, Transform xrOriginTransform) ``` -------------------------------- ### Initialize XRControllerState with Basic Tracking and Button States Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.XRControllerState.html Initializes and returns an instance of XRControllerState with tracking details and active states for select, activate, and press inputs. ```csharp public XRControllerState(double time, Vector3 position, Quaternion rotation, InputTrackingState inputTrackingState, bool isTracked, bool selectActive, bool activateActive, bool pressActive) ``` -------------------------------- ### Check if Interactor is Hovering an Interactable (Example) Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.IXRHoverInteractor.html This example demonstrates how to check if an Interactor is currently hovering over any interactables by examining the count of the `interactablesHovered` list. This is a common way to determine if the interactor is in a hover state. ```csharp interactablesHovered.Count > 0 ``` -------------------------------- ### Get Attach Point Angular Velocity Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Attachment.AttachPointVelocityProviderExtensions.html Retrieves the current angular velocity of the attachment point, transformed by the XR Origin. Use this to get the rotational speed of an attached object relative to the XR Origin. ```csharp public static Vector3 GetAttachPointAngularVelocity(this IAttachPointVelocityProvider provider, Transform xrOriginTransform) ``` -------------------------------- ### TryStartLocomotionImmediately() Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionProvider.html Attempts to immediately transition this provider into the Moving state, bypassing the 'canStartMoving' check. This succeeds if the provider was not already in the Moving state. Upon entering the Moving state, it will invoke 'locomotionStarted' and gain access to the XRBodyTransformer. ```APIDOC ## TryStartLocomotionImmediately() ### Description Attempts to immediately transition this provider into the Moving state, bypassing the 'canStartMoving' check. This succeeds if the provider was not already in the Moving state. Upon entering the Moving state, it will invoke 'locomotionStarted' and gain access to the XRBodyTransformer. ### Method protected bool TryStartLocomotionImmediately() ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Parameters None ### Request Example None ### Response #### Success Response (200) - **bool** - Returns true if locomotionState was not already Moving when this was called, false otherwise. ### Response Example None ``` -------------------------------- ### tapStartPosition Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.Inputs.TouchscreenGestureInputController.html The screen position where the tap gesture started. ```APIDOC ## tapStartPosition ### Description The screen position where the tap gesture started. ### Property Value - **Type**: Vector2Control - **Description**: N/A ``` -------------------------------- ### SimulatedInputLayoutLoader.Initialize Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedInputLayoutLoader.html This static method is automatically called by Unity at runtime before the first scene is loaded. It is responsible for initializing the control layouts used by the XRDeviceSimulator. ```APIDOC ## Initialize() ### Description See BeforeSceneLoad. ### Method `static void Initialize()` ### Declaration ```csharp [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] [Preserve] public static void Initialize() ``` ### See Also - XRSimulatedHMD - XRSimulatedController ``` -------------------------------- ### retractDelay Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.CurveVisualController.html Delay before the line starts retracting after extending. ```csharp public float retractDelay { get; set; } ``` -------------------------------- ### UIInteractorUnregisteredEventArgs interactor Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.UIInteractorUnregisteredEventArgs.html Gets the UI interactor that was unregistered. ```csharp public IUIInteractor interactor { get; set; } ``` -------------------------------- ### OnLocomotionStarting Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement.ContinuousMoveProvider.html Called when locomotion enters the Moving state. Overrides the base LocomotionProvider.OnLocomotionStarting method. ```csharp protected override void OnLocomotionStarting() { } ``` -------------------------------- ### FollowPresetDatumProperty Constructor with FollowPresetDatum Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPresetDatumProperty.html Initializes a new instance of the FollowPresetDatumProperty class with a specified FollowPresetDatum. This constructor is used when the data is a reference to a ScriptableObject container. ```csharp public FollowPresetDatumProperty(FollowPresetDatum datum) ``` -------------------------------- ### XRRayInteractor rayEndTransform Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRRayInteractor.html Gets the Transform of the object the ray has collided with, if any. ```csharp public Transform rayEndTransform { get; } ``` -------------------------------- ### format Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.XRSimulatedHMDState.html Gets the data format identifier of the XRSimulatedHMDState. ```csharp public FourCC format { get; } ``` -------------------------------- ### Handling XR Interaction Manager Registration Events Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.InteractableSnapVolumeRegisteredEventArgs.html This example demonstrates how to subscribe to and handle registration and unregistration events for XR interaction components like Interaction Groups, Interactors, Interactables, and Snap Volumes. It shows how to create callbacks for each event and log messages when components are registered or unregistered. Ensure an XRInteractionManager is present in the scene. ```csharp using UnityEngine; using UnityEngine.XR.Interaction.Toolkit; using UnityEngine.XR.Interaction.Toolkit.Interactables; using UnityEngine.XR.Interaction.Toolkit.Interactors; /// /// This class is an example script that registration events and demonstrates how to create callbacks for each event. /// class XRInteractionManagerRegistrationEventsSample : MonoBehaviour { [SerializeField] XRInteractionManager m_InteractionManager; XRInteractionGroup m_ExampleInteractionGroup; NearFarInteractor m_ExampleInteractor; XRGrabInteractable m_ExampleInteractable; XRInteractableSnapVolume m_ExampleSnapVolume; void Awake() { // Try to find an interaction manager if necessary. if (m_InteractionManager == null) m_InteractionManager = FindAnyObjectByType(); // Note, the code below is creating the XRInteractionGroup, NearFarInteractor, XRGrabInteractable, and XRInteractableSnapVolume before subscribing // to the interaction manager register/unregister events. Therefore, the initial register callback will not be logged. // To demonstrate these callbacks, enable/disable each example game object in the hierarchy to receive the register/unregister callbacks. // XRInteractionGroup automatically registers with the interaction manager on Awake var interactionGroupGO = new GameObject("Example Interaction Group"); m_ExampleInteractionGroup = interactionGroupGO.AddComponent(); // XRBaseInteractor automatically registers with the interaction manager on Enable var interactorGO = new GameObject("Example Interactor"); m_ExampleInteractor = interactorGO.AddComponent(); // XRBaseInteractable automatically registers with the interaction manager on Enable var interactableGO = new GameObject("Example Interactable"); m_ExampleInteractable = interactableGO.AddComponent(); // XRInteractableSnapVolume automatically registers with the interaction manager on Enable var snapVolumeGO = new GameObject("Example Snap Volume"); m_ExampleSnapVolume = snapVolumeGO.AddComponent(); } void OnEnable() { if (m_InteractionManager == null) { Debug.LogWarning("Interaction manager is null. No registration events will be executed in this example. Ensure there is an " + typeof(XRInteractionManager) + " in the scene.", this); return; } // Subscribe to the interaction manager registration events m_InteractionManager.interactionGroupRegistered += OnInteractionGroupRegistered; m_InteractionManager.interactorRegistered += OnInteractorRegistered; m_InteractionManager.interactableRegistered += OnInteractableRegistered; m_InteractionManager.snapVolumeRegistered += OnSnapVolumeRegistered; m_InteractionManager.interactionGroupUnregistered += OnInteractionGroupUnregistered; m_InteractionManager.interactorUnregistered += OnInteractorUnregistered; m_InteractionManager.interactableUnregistered += OnInteractableUnregistered; m_InteractionManager.snapVolumeUnregistered += OnSnapVolumeUnregistered; } void OnDisable() { if (m_InteractionManager == null) return; // Unsubscribe to the interaction manager registration events m_InteractionManager.interactionGroupRegistered -= OnInteractionGroupRegistered; m_InteractionManager.interactorRegistered -= OnInteractorRegistered; m_InteractionManager.interactableRegistered -= OnInteractableRegistered; m_InteractionManager.snapVolumeRegistered -= OnSnapVolumeRegistered; m_InteractionManager.interactionGroupUnregistered -= OnInteractionGroupUnregistered; m_InteractionManager.interactorUnregistered -= OnInteractorUnregistered; m_InteractionManager.interactableUnregistered -= OnInteractableUnregistered; m_InteractionManager.snapVolumeUnregistered -= OnSnapVolumeUnregistered; } void OnInteractionGroupRegistered(InteractionGroupRegisteredEventArgs args) { // Example of casting args object to interaction group base class var interactionGroup = args.interactionGroupObject as XRInteractionGroup; // Logic for interaction group registered event goes here if (interactionGroup != null && interactionGroup == m_ExampleInteractionGroup) Debug.Log(interactionGroup.transform.name + " is registered with " + args.manager.transform.name, this); } void OnInteractionGroupUnregistered(InteractionGroupUnregisteredEventArgs args) { // Example of casting args object to interaction group base class var interactionGroup = args.interactionGroupObject as XRInteractionGroup; // Logic for interaction group unregistered event goes here if (interactionGroup != null && interactionGroup == m_ExampleInteractionGroup) Debug.Log(interactionGroup.transform.name + " is unregistered from " + args.manager.transform.name, this); } void OnInteractorRegistered(InteractorRegisteredEventArgs args) { // Example of casting args object to interactor base class var interactor = args.interactorObject as IXRInteractor; // Logic for interactor registered event goes here if (interactor != null && interactor == m_ExampleInteractor) Debug.Log(interactor.transform.name + " is registered with " + args.manager.transform.name, this); } void OnInteractorUnregistered(InteractorUnregisteredEventArgs args) { // Example of casting args object to interactor base class var interactor = args.interactorObject as IXRInteractor; // Logic for interactor unregistered event goes here if (interactor != null && interactor == m_ExampleInteractor) Debug.Log(interactor.transform.name + " is unregistered from " + args.manager.transform.name, this); } void OnInteractableRegistered(InteractableRegisteredEventArgs args) { // Example of casting args object to interactable base class var interactable = args.interactableObject as IXRInteractable; // Logic for interactable registered event goes here if (interactable != null && interactable == m_ExampleInteractable) Debug.Log(interactable.transform.name + " is registered with " + args.manager.transform.name, this); } void OnInteractableUnregistered(InteractableUnregisteredEventArgs args) { // Example of casting args object to interactable base class var interactable = args.interactableObject as IXRInteractable; // Logic for interactable unregistered event goes here if (interactable != null && interactable == m_ExampleInteractable) Debug.Log(interactable.transform.name + " is unregistered from " + args.manager.transform.name, this); } void OnSnapVolumeRegistered(SnapVolumeRegisteredEventArgs args) { // Example of casting args object to snap volume base class var snapVolume = args.snapVolumeObject as XRInteractableSnapVolume; // Logic for snap volume registered event goes here if (snapVolume != null && snapVolume == m_ExampleSnapVolume) Debug.Log(snapVolume.transform.name + " is registered with " + args.manager.transform.name, this); } void OnSnapVolumeUnregistered(SnapVolumeUnregisteredEventArgs args) { // Example of casting args object to snap volume base class var snapVolume = args.snapVolumeObject as XRInteractableSnapVolume; // Logic for snap volume unregistered event goes here if (snapVolume != null && snapVolume == m_ExampleSnapVolume) Debug.Log(snapVolume.transform.name + " is unregistered from " + args.manager.transform.name, this); } } ``` -------------------------------- ### transformToFollow Property Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Attachment.IInteractionAttachController.html Gets or sets the transform that the anchor will follow. ```csharp Transform transformToFollow { get; set; } ``` -------------------------------- ### InitRecording Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.XRControllerRecording.html Initializes the recording by clearing all previously stored frames. This prepares the recording for a new session. ```APIDOC ## InitRecording() ### Description Initializes this recording by clearing all frames stored. ### Method `public void InitRecording()` ### See Also - XRControllerRecorder ``` -------------------------------- ### DragGesture OnStart Method Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.AR.DragGesture.html Called automatically when this drag gesture is started. Overrides the base Gesture.OnStart() method. ```csharp protected override void OnStart() ``` -------------------------------- ### Width Curve Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.XRInteractorLineVisual.html Controls the relative width of the line from start to end. ```csharp public AnimationCurve widthCurve { get; set; } ``` -------------------------------- ### FollowPresetDatumProperty Constructor with FollowPreset Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.UI.BodyUI.FollowPresetDatumProperty.html Initializes a new instance of the FollowPresetDatumProperty class with a specified FollowPreset value. This constructor is used when the data is directly serialized as a constant value. ```csharp public FollowPresetDatumProperty(FollowPreset value) ``` -------------------------------- ### OnHoverEntered Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Interactors.IXRHoverInteractor.html The XRInteractionManager calls this method when the Interactor starts hovering over an Interactable. ```APIDOC ## OnHoverEntered(HoverEnterEventArgs args) ### Description Called when the Interactor begins hovering over an Interactable. ### Parameters #### Path Parameters - **args** (HoverEnterEventArgs) - Required - Event data containing the Interactable that is being hovered over. ### Remarks `args` is only valid during this method call, do not hold a reference to it. ### See Also OnHoverEntered(HoverEnterEventArgs) ``` -------------------------------- ### ClimbSettingsDatumProperty Constructor with ClimbSettingsDatum Source: https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit%403.5/api/UnityEngine.XR.Interaction.Toolkit.Locomotion.Climbing.ClimbSettingsDatumProperty.html Initializes a new instance of the ClimbSettingsDatumProperty class with a reference to a ClimbSettingsDatum ScriptableObject. Use this when your settings are stored in a separate asset. ```csharp public ClimbSettingsDatumProperty(ClimbSettingsDatum datum) ```