rust_oculus_touch 0.1.0

Rust API to interface your Oculus Touch controllers and headset
Documentation
# What is it?


This is a rust library that allows you to interface with your Oculus Touch controllers and headset. It is a wrapper for the [auto_oculus_touch](https://github.com/rajetic/auto_oculus_touch/) project.

With it, you can read the current state of the controllers and headset, send button presses to the controller, or move the thumbsticks.

# Installation


```bash
cargo add rust_oculus_touch
```

# Example Usage


Below is a short program that will vibrate both controllers for 1 second whenever the X button is pressed while the headset is being worn.

```rust
use rust_oculus_touch as ot;

fn main() {
    let oculus = ot::OculusTouch::new();
    oculus.InitOculus();

    while true {
        oculus.Poll();
        println!("\n");

        let wearing = oculus.Wearing();
        println!(
            "Headset is {} your head",
            if wearing { "ON" } else { "OFF" }
        );

        let x = oculus.GetPositionX(ot::OculusTouchControllerEnum::Head);
        let y = oculus.GetPositionY(ot::OculusTouchControllerEnum::Head);
        let z = oculus.GetPositionZ(ot::OculusTouchControllerEnum::Head);
        let yaw = oculus.GetYaw(ot::OculusTouchControllerEnum::Head);
        let pitch = oculus.GetPitch(ot::OculusTouchControllerEnum::Head);
        let roll = oculus.GetRoll(ot::OculusTouchControllerEnum::Head);
        println!(
            "Headset Position: ({}, {}, {}), Yaw: {}, Pitch: {}, Roll: {}",
            x, y, z, yaw, pitch, roll
        );

        let buttons_down = oculus.GetButtonsDownList(); // Get a list of buttons that are currently held down
        let sensors_touched = oculus.GetTouchDownList(); // Get a list of capacitive sensors that are currently being touched
        println!("These buttons are down: {:?}", buttons_down);
        println!("These sensors are touched: {:?}", sensors_touched);

        println!("Here's a vibration for fun!"); // Vibrate the controllers
        oculus.Vibrate(
            ot::OculusTouchControllerEnum::Left,
            ot::OculusTouchVibrationFrequencyEnum::Medium,
            128,
            1.0,
        );
        oculus.Vibrate(
            ot::OculusTouchControllerEnum::Right,
            ot::OculusTouchVibrationFrequencyEnum::Medium,
            128,
            1.0,
        );

        oculus.PollAndSleep(1.0 as u64); // Poll and wait 1 second
    }
}
```

This is a smaple output from the above program:

```
Headset is ON your head
Headset Position: (-0.011632837, 0.061689533, 0.34418005), Yaw: 6.269506, Pitch: 37.764984, Roll: 1.5803292
These buttons are down: [RThumb]
These sensors are touched: [RThumb]
Here's a vibration for fun!


Headset is ON your head
Headset Position: (-0.010339707, 0.061480127, 0.34358978), Yaw: 6.575623, Pitch: 37.657368, Roll: 1.8094705
These buttons are down: []
These sensors are touched: [A, B]
Here's a vibration for fun!


Headset is ON your head
Headset Position: (-0.0077772066, 0.06255522, 0.3305807), Yaw: 6.428792, Pitch: 37.119587, Roll: 1.9261029
These buttons are down: []
These sensors are touched: [A, B, RIndexTrigger]
Here's a vibration for fun!


Headset is ON your head
Headset Position: (0.040116116, 0.071848914, 0.05625144), Yaw: 3.89342, Pitch: 28.924469, Roll: 2.6751015
These buttons are down: []
These sensors are touched: []
Here's a vibration for fun!
```

# API Reference


## InitOculus


Initialize the Oculus API.

### Parameters


- `poll: boolean` (Optional): If true, polls the Oculus API after initializing. Defaults to true.

### Returns


- `number`: Return code from the initialization process.

## Poll


Polls the Oculus Touch API for state updates.

### Parameters


_None_

### Returns


_None_

## Sleep


Blocks the runtime and waits for the specified length. Useful for sleeping between polls.

### Parameters


- `length: number` (Optional): Length of time to sleep in seconds. Defaults to 0.1.

### Returns


- `Promise<void>`: A Promise that resolves after the specified length of time.

## PollAndSleep


Combines the `Poll()` and `Sleep()` functions.

### Parameters


- `length: number` (Optional): Length of time to sleep in seconds. Defaults to 0.1.

### Returns


- `Promise<void>`: A Promise that resolves after the specified length of time.

## Wearing


Checks if the user is wearing the headset.

### Parameters


_None_

### Returns


- `boolean`: True if the user is wearing the headset, false otherwise.

## IsPressed


Checks if the specified button was pressed in the current poll. "Pressed" and "Down" are not the same thing.

### Parameters


- `button: OculusTouchButtonEnum`: The button to check.

### Returns


- `boolean`: True if the button was pressed, false otherwise.

## IsReleased


Checks if the specified button was released in the current poll.

### Parameters


- `button: OculusTouchButtonEnum`: The button to check.

### Returns


- `boolean`: True if the button was released, false otherwise.

## IsDown


Checks if the specified button is currently held down. "Pressed" and "Down" are not the same thing.

### Parameters


- `button: OculusTouchButtonEnum`: The button to check.

### Returns


- `boolean`: True if the button is held down, false otherwise.

## IsTouchPressed


Checks if the specified button's capacitor was touched in the current poll. "Pressed" and "Down" are not the same thing.

### Parameters


- `sensor: OculusTouchSensorEnum`: The sensor to check.

### Returns


- `boolean`: True if the button's capacitor was touched, false otherwise.

## IsTouchReleased


Checks if the specified button's capacitor was released in the current poll.

### Parameters


- `sensor: OculusTouchSensorEnum`: The sensor to check.

### Returns


- `boolean`: True if the button's capacitor was released, false otherwise.

## IsTouchDown


Checks if the specified button's capacitor is currently being touched. "Pressed" and "Down" are not the same thing.

### Parameters


- `sensor: OculusTouchSensorEnum`: The sensor to check.

### Returns


- `boolean`: True if the button's capacitor is being touched, false otherwise.

## Reached


Checks whether a specified axis has reached a specified threshold value in between the last poll.

### Parameters


- `axis: OculusTouchAxisEnum`: The axis to check.
- `value: number`: The threshold value to check against.

### Returns


- `number`: Return code indicating if the axis has reached the threshold. 0 if the threshold wasn't crossed. 1 if the threshold was crossed in the positive direction. -1 if it was crossed in the negative direction.

## GetAxis


Returns the value of the specified axis.

### Parameters


- `axis: OculusTouchAxisEnum`: The axis to query.

### Returns


- `number`: The current value of the specified axis.

## GetButtonsDown


Returns a bitmask of all buttons currently held down. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `number`: Bitmask representing buttons currently held down.

## GetButtonsDownList


Returns a list of all buttons currently held down. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `OculusTouchButtonEnum[]`: List of buttons currently held down.

## GetButtonsReleased


Returns a bitmask of all buttons released in the current poll.

### Parameters


_None_

## Returns


- `number`: Bitmask representing buttons released in the current poll.

## GetButtonsReleasedList


Returns a list of all buttons released in the current poll.

### Parameters


_None_

### Returns


- `OculusTouchButtonEnum[]`: List of buttons released in the current poll.

## GetButtonsPressed


Returns a bitmask of all buttons pressed in the current poll. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `number`: Bitmask representing buttons pressed in the current poll.

## GetButtonsPressedList


Returns a list of all buttons pressed in the current poll. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `OculusTouchButtonEnum[]`: List of buttons pressed in the current poll.

## GetTouchDown


Returns a bitmask of all buttons whose capacitors are currently being touched. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `number`: Bitmask representing buttons whose capacitors are currently being touched.

## GetTouchDownList


Returns a list of all buttons whose capacitors are currently being touched. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `OculusTouchSensorEnum[]`: List of buttons whose capacitors are currently being touched.

## GetTouchPressed


Returns a bitmask of all buttons whose capacitors were touched in the current poll. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `number`: Bitmask representing buttons whose capacitors were touched in the current poll.

## GetTouchPressedList


Returns a list of all buttons whose capacitors were touched in the current poll. "Pressed" and "Down" are not the same thing.

### Parameters


_None_

### Returns


- `OculusTouchSensorEnum[]`: List of buttons whose capacitors were touched in the current poll.

## GetTouchReleased


Returns a bitmask of all buttons whose capacitors were released in the current poll.

### Parameters


_None_

### Returns


- `number`: Bitmask representing buttons whose capacitors were released in the current poll.

## GetTouchReleasedList


Returns a list of all buttons whose capacitors were released in the current poll.

### Parameters


_None_

### Returns


- `OculusTouchSensorEnum[]`: List of buttons whose capacitors were released in the current poll.

## GetTrigger


Returns the value of a specified trigger.

### Parameters


- `hand: OculusTouchHandEnum`: The hand (left or right) of the trigger.
- `trigger: OculusTouchTriggerEnum`: The trigger (index or hand) to query.

### Returns


- `number`: The value of the specified trigger.

## GetThumbStick


Returns the value of a specified thumbstick's axis.

### Parameters


- `hand: OculusTouchHandEnum`: The hand (left or right) of the thumbstick.
- `axis: OculusTouchAxisEnum`: The axis (x or y) of the thumbstick to query.

### Returns


- `number`: The value of the specified thumbstick's axis.

## Vibrate


Vibrates a specified controller.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to vibrate.
- `frequency: OculusTouchVibrationFrequencyEnum` (Optional): The vibration frequency. Default is `OculusTouchVibrationFrequencyEnum.Medium`.
- `amplitude: number` (Optional): The amplitude of the vibration, range [0, 255]. Default is 128.
- `length: number` (Optional): The length of the vibration in seconds, 0 for infinite. Default is 1.0.

### Throws


- `Error`: If the amplitude is not in the range [0, 255].

### Returns


_None_

## GetYaw


Returns the yaw of a specified controller. Yaw is rotation around the y-axis.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to query.

### Returns


- `number`: The yaw (rotation around the y-axis) of the specified controller.

## GetPitch


Returns the pitch of a specified controller. Pitch is rotation around the x-axis.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to query.

### Returns


- `number`: The pitch (rotation around the x-axis) of the specified controller.

## GetRoll


Returns the roll of a specified controller. Roll is rotation around the z-axis.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to query.

### Returns


- `number`: The roll (rotation around the z-axis) of the specified controller.

## GetPositionX


Returns the x position of a specified controller.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to query.

### Returns


- `number`: The x position of the specified controller.

## GetPositionY


Returns the y position of a specified controller.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to query.

### Returns


- `number`: The y position of the specified controller.

## GetPositionZ


Returns the z position of a specified controller.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller to query.

### Returns


- `number`: The z position of the specified controller.

## SetTrackingOrigin


Sets the tracking origin of the headset. This is the point in space that the headset will consider to be the origin (0, 0, 0).

### Parameters


- `origin: OculusTouchTrackingOriginEnum`: The tracking origin to set.

### Returns


_None_

## ResetFacing


Resets the yaw of a specified controller. Yaw is rotation around the y-axis.

### Parameters


- `controller: OculusTouchControllerEnum`: The controller for which to reset the yaw.

### Returns


_None_

## InitvJoy


Initializes the vJoy driver. This must be called before any vJoy functions can be used.

### Parameters


- `device: number`: The vJoy device number to initialize.

### Throws


- `Error`: If there is an error during initialization.

### Returns


_None_

## SetvJoyAxis


Sets the value of a specified vJoy axis.

### Parameters


- `axis: OculusTouchvJoyDeviceEnum`: The vJoy axis to set.
- `value: number`: The value to set, range [0.0, 1.0].

### Returns


_None_

## SetvJoyAxisU


Sets the value of a specified vJoy axis using a different range.

### Parameters


- `axis: OculusTouchvJoyDeviceEnum`: The vJoy axis to set.
- `value: number`: The value to set, range [0.0, 1.0], mapped to [-1.0, 1.0].

### Returns


_None_

## SetvJoyButton


Sets the value of a specified vJoy button.

### Parameters


- `button: OculusTouchButtonEnum`: The vJoy button to set.
- `value: number`: The value to set, range [0, 1].

### Returns


_None_

## SendRawMouseMove


Sends a raw mouse move event to the host computer.

### Parameters


- `x: number`: The relative movement in the x direction.
- `y: number`: The relative movement in the y direction.
- `z: number`: The relative movement in the z direction.

### Returns


_None_

## SendRawMouseButtonDown


Sends a raw mouse button down event to the host computer.

### Parameters


- `button: OculusTouchRawMouseButtonEnum`: The button to press.

### Returns


_None_

## SendRawMouseButtonUp


Sends a raw mouse button up event to the host computer.

### Parameters


- `button: OculusTouchRawMouseButtonEnum`: The button to release.

### Returns


_None_