Skip to main content

dualsense_tools/state/
accel.rs

1use std::ops::{Deref, DerefMut};
2
3use glam::Vec3;
4
5use crate::state::SpatialSensor;
6
7/// Represents readings from an accelerometer
8#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Hash)]
9pub struct Accel<V>(SpatialSensor<V>);
10
11impl<T> Accel<T> {
12    /// Instantiate a new Accel from individual components
13    pub fn new(x: T, y: T, z: T) -> Accel<T> {
14        Accel(SpatialSensor { x, y, z })
15    }
16
17    /// Instantiate a new Accel from a glam Vec3
18    pub fn from_vec(v: Vec3) -> Accel<T>
19    where
20        T: From<f32>,
21    {
22        Accel(SpatialSensor {
23            x: v.x.into(),
24            y: v.y.into(),
25            z: v.z.into(),
26        })
27    }
28}
29
30impl<V> Deref for Accel<V> {
31    type Target = SpatialSensor<V>;
32
33    fn deref(&self) -> &Self::Target {
34        &self.0
35    }
36}
37
38impl<V> DerefMut for Accel<V> {
39    fn deref_mut(&mut self) -> &mut Self::Target {
40        &mut self.0
41    }
42}