diff --git a/src/lib.rs b/src/lib.rs index d2ef572..3e623fe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -123,13 +123,3 @@ pub enum Eye { Left = sys::EVREye_EVREye_Eye_Left as isize, Right = sys::EVREye_EVREye_Eye_Right as isize, } - -#[derive(Debug, Copy, Clone)] -pub struct TrackedDevicePoses { - data: [TrackedDevicePose; sys::k_unMaxTrackedDeviceCount as usize] -} - -impl TrackedDevicePoses { - pub fn iter(&self) -> slice::Iter { self.data.iter() } - pub fn len(&self) -> usize { self.data.len() } -} diff --git a/src/tracking.rs b/src/tracking.rs index 1554198..4ba1746 100644 --- a/src/tracking.rs +++ b/src/tracking.rs @@ -64,3 +64,21 @@ pub enum TrackedControllerRole { LeftHand = sys::ETrackedControllerRole_ETrackedControllerRole_TrackedControllerRole_LeftHand as isize, RightHand = sys::ETrackedControllerRole_ETrackedControllerRole_TrackedControllerRole_RightHand as isize, } + +#[derive(Debug, Copy, Clone)] +pub struct TrackedDevicePoses { + data: [TrackedDevicePose; sys::k_unMaxTrackedDeviceCount as usize] +} + +impl TrackedDevicePoses { + pub fn iter(&self) -> slice::Iter { self.data.iter() } + pub fn len(&self) -> usize { self.data.len() } +} + +impl ::std::ops::Index for TrackedDevicePoses { + type Output = TrackedDevicePose; + + fn index(&self, index: TrackedDeviceIndex) -> &TrackedDevicePose { + &self.data[index as usize] + } +}