5 个版本
0.1.0 | 2023 年 12 月 22 日 |
---|---|
0.0.6 | 2023 年 12 月 22 日 |
0.0.5 | 2023 年 12 月 22 日 |
0.0.4 | 2023 年 12 月 22 日 |
0.0.3 | 2023 年 12 月 22 日 |
#553 在 硬件支持 中
每月 34 次下载
260KB
417 行
包含 (Windows DLL,180KB) lib/vJoyInterface.dll,(Windows DLL,47KB) lib/auto_oculus_touch.dll
这是什么?
这是一个允许您与您的 Oculus Touch 控制器和头戴式耳机交互的 Rust 库。它是 auto_oculus_touch 项目的包装。
使用它,您可以读取控制器和头戴式耳机的当前状态,向控制器发送按钮点击,或移动摇杆。
安装
cargo add rust_oculus_touch
示例用法
以下是一个简短的程序,当头戴式耳机佩戴时按下 X 按钮时,将使两个控制器振动 1 秒。
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
}
}
这是上述程序的示例输出
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 参考
InitOculus
初始化 Oculus API。
参数
poll: boolean
(可选): 如果为 true,则在初始化后轮询 Oculus API。默认为 true。
返回值
number
: 初始化过程中的返回代码。
Poll
轮询 Oculus Touch API 以获取状态更新。
参数
None
返回值
None
Sleep
阻止运行时并等待指定的时间长度。在轮询之间睡眠很有用。
参数
length: number
(可选): 睡眠的时间长度(秒)。默认为 0.1。
返回值
Promise<void>
: 一旦经过指定的时间长度,就会解决的 Promise。
PollAndSleep
组合了 Poll()
和 Sleep()
函数。
参数
length: number
(可选): 睡眠的时间长度(秒)。默认为 0.1。
返回值
Promise<void>
: 一旦经过指定的时间长度,就会解决的 Promise。
Wearing
检查用户是否佩戴了头戴式耳机。
参数
None
返回值
boolean
: 如果用户佩戴了头戴式耳机则为 true,否则为 false。
IsPressed
检查在当前轮询中是否按下了指定的按钮。"Pressed" 和 "Down" 并不相同。
参数
button: OculusTouchButtonEnum
: 要检查的按钮。
返回值
boolean
: 如果按钮被按下则为 true,否则为 false。
IsReleased
检查在当前轮询中是否释放了指定的按钮。
参数
button: OculusTouchButtonEnum
: 要检查的按钮。
返回值
boolean
:如果按钮被释放则为真,否则为假。
IsDown
检查指定的按钮是否当前按下。"按下"和"按下"不是同一回事。
参数
button: OculusTouchButtonEnum
: 要检查的按钮。
返回值
boolean
:如果按钮被按下则为真,否则为假。
IsTouchPressed
检查在当前轮询中是否触摸了指定的按钮的电容器。"按下"和"按下"不是同一回事。
参数
sensor: OculusTouchSensorEnum
:要检查的传感器。
返回值
boolean
:如果按钮的电容器被触摸则为真,否则为假。
IsTouchReleased
检查在当前轮询中是否释放了指定的按钮的电容器。
参数
sensor: OculusTouchSensorEnum
:要检查的传感器。
返回值
boolean
:如果按钮的电容器被释放则为真,否则为假。
IsTouchDown
检查指定的按钮的电容器是否当前正在被触摸。"按下"和"按下"不是同一回事。
参数
sensor: OculusTouchSensorEnum
:要检查的传感器。
返回值
boolean
:如果按钮的电容器正在被触摸则为真,否则为假。
Reached
检查是否在最后一次轮询之间指定的轴达到了指定的阈值。
参数
axis: OculusTouchAxisEnum
:要检查的轴。value: number
:要检查的阈值。
返回值
number
:返回代码,指示轴是否达到阈值。如果没有越过阈值,则为0。如果正向越过阈值,则为1。如果负向越过阈值,则为-1。
GetAxis
返回指定轴的值。
参数
axis: OculusTouchAxisEnum
:要查询的轴。
返回值
number
:指定轴的当前值。
GetButtonsDown
返回当前按下的所有按钮的掩码。"按下"和"按下"不是同一回事。
参数
None
返回值
number
:表示当前按下的按钮的掩码。
GetButtonsDownList
返回当前按下的所有按钮的列表。"按下"和"按下"不是同一回事。
参数
None
返回值
OculusTouchButtonEnum[]
:当前按下的按钮列表。
GetButtonsReleased
返回当前轮询中释放的所有按钮的掩码。
参数
None
返回值
number
:表示当前轮询中释放的按钮的掩码。
GetButtonsReleasedList
返回当前轮询中释放的所有按钮的列表。
参数
None
返回值
OculusTouchButtonEnum[]
:当前轮询中释放的按钮列表。
GetButtonsPressed
返回当前轮询中按下的所有按钮的掩码。"按下"和"按下"不是同一回事。
参数
None
返回值
number
:表示当前轮询中按下的按钮的掩码。
GetButtonsPressedList
返回当前轮询中按下的所有按钮的列表。"按下"和"按下"不是同一回事。
参数
None
返回值
OculusTouchButtonEnum[]
:当前轮询中按下的按钮列表。
GetTouchDown
返回当前正在被触摸的所有按钮的掩码。"按下"和"按下"不是同一回事。
参数
None
返回值
number
:表示当前正在被触摸的按钮的掩码。
GetTouchDownList
返回当前正在被触摸的所有按钮的列表。"按下"和"按下"不是同一回事。
参数
None
返回值
OculusTouchSensorEnum[]
:当前正在被触摸的按钮列表。
GetTouchPressed
返回当前轮询中所有被触摸的电容按钮的位掩码。"按下"和"按下状态"是不同的。
参数
None
返回值
number
:表示当前轮询中被触摸的电容按钮的位掩码。
GetTouchPressedList
返回当前轮询中被触摸的所有电容按钮的列表。"按下"和"按下状态"是不同的。
参数
None
返回值
OculusTouchSensorEnum[]
:表示当前轮询中被触摸的电容按钮的列表。
GetTouchReleased
返回当前轮询中所有释放的电容按钮的位掩码。
参数
None
返回值
number
:表示当前轮询中被释放的电容按钮的位掩码。
GetTouchReleasedList
返回当前轮询中所有释放的电容按钮的列表。
参数
None
返回值
OculusTouchSensorEnum[]
:表示当前轮询中被释放的电容按钮的列表。
GetTrigger
返回指定触发器的值。
参数
hand: OculusTouchHandEnum
:触发器的手(左手或右手)。trigger: OculusTouchTriggerEnum
:要查询的触发器(索引或手)。
返回值
number
:指定触发器的值。
GetThumbStick
返回指定摇杆的轴值。
参数
hand: OculusTouchHandEnum
:摇杆的手(左手或右手)。axis: OculusTouchAxisEnum
:要查询的摇杆轴(x或y)。
返回值
number
:指定摇杆轴的值。
Vibrate
振动指定控制器。
参数
controller: OculusTouchControllerEnum
:要振动的控制器。frequency: OculusTouchVibrationFrequencyEnum
(可选):振动频率。默认是OculusTouchVibrationFrequencyEnum.Medium
。amplitude: number
(可选):振动的幅度,范围 [0, 255]。默认是 128。length: number
(可选):振动时长(秒),0 表示无限。默认是 1.0。
抛出异常
Error
:如果幅度不在 [0, 255] 范围内。
返回值
None
GetYaw
返回指定控制器的偏航。偏航是围绕 y 轴的旋转。
参数
controller: OculusTouchControllerEnum
:要查询的控制器。
返回值
number
:指定控制器的偏航(围绕 y 轴的旋转)。
GetPitch
返回指定控制器的俯仰。俯仰是围绕 x 轴的旋转。
参数
controller: OculusTouchControllerEnum
:要查询的控制器。
返回值
number
:指定控制器的俯仰(围绕 x 轴的旋转)。
GetRoll
返回指定控制器的翻滚。翻滚是围绕 z 轴的旋转。
参数
controller: OculusTouchControllerEnum
:要查询的控制器。
返回值
number
:指定控制器的翻滚(围绕 z 轴的旋转)。
GetPositionX
返回指定控制器的 x 坐标。
参数
controller: OculusTouchControllerEnum
:要查询的控制器。
返回值
number
:指定控制器的 x 坐标。
GetPositionY
返回指定控制器的 y 坐标。
参数
controller: OculusTouchControllerEnum
:要查询的控制器。
返回值
number
:指定控制器的 y 坐标。
GetPositionZ
返回指定控制器的 z 坐标。
参数
controller: OculusTouchControllerEnum
:要查询的控制器。
返回值
number
:指定控制器的 z 坐标。
SetTrackingOrigin
设置头显的跟踪原点。这是头显将视为原点(0, 0, 0)的点。
参数
origin: OculusTouchTrackingOriginEnum
:要设置的跟踪原点。
返回值
None
ResetFacing
重置指定控制器的偏航。偏航是绕y轴的旋转。
参数
controller: OculusTouchControllerEnum
:要重置偏航的控制器的枚举。
返回值
None
InitvJoy
初始化vJoy驱动程序。在使用任何vJoy函数之前必须调用此函数。
参数
device: number
:要初始化的vJoy设备号。
抛出异常
Error
:如果在初始化过程中发生错误。
返回值
None
SetvJoyAxis
设置指定vJoy轴的值。
参数
axis: OculusTouchvJoyDeviceEnum
:要设置的vJoy轴。value: number
:要设置的值,范围[0.0, 1.0]。
返回值
None
SetvJoyAxisU
使用不同的范围设置指定vJoy轴的值。
参数
axis: OculusTouchvJoyDeviceEnum
:要设置的vJoy轴。value: number
:要设置的值,范围[0.0, 1.0],映射到[-1.0, 1.0]。
返回值
None
SetvJoyButton
设置指定vJoy按钮的值。
参数
button: OculusTouchButtonEnum
:要设置的vJoy按钮。value: number
:要设置的值,范围[0, 1]。
返回值
None
SendRawMouseMove
向宿主计算机发送原始鼠标移动事件。
参数
x: number
:x方向上的相对移动。y: number
:y方向上的相对移动。z: number
:z方向上的相对移动。
返回值
None
SendRawMouseButtonDown
向宿主计算机发送原始鼠标按钮按下事件。
参数
button: OculusTouchRawMouseButtonEnum
:要按下的按钮。
返回值
None
SendRawMouseButtonUp
向宿主计算机发送原始鼠标按钮释放事件。
参数
button: OculusTouchRawMouseButtonEnum
:要释放的按钮。
返回值
None
依赖关系
~0.5–6MB
~25K SLoC