dualsense_tools/virtual_controller/
state.rs1use crate::virtual_controller::{Axes, AxisId, AxisValue, ButtonId, Buttons, Hat};
2
3#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Hash)]
5pub struct VirtualControllerState {
6 pub axes: Axes,
7 pub hat: Hat,
8 pub buttons: Buttons,
9 pub is_tilt_enabled: bool,
10}
11
12impl VirtualControllerState {
13 pub fn get_axis(&self, id: &AxisId) -> AxisValue {
15 match id {
16 AxisId::X => self.axes.x,
17 AxisId::Y => self.axes.y,
18 AxisId::Z => self.axes.z,
19 AxisId::RX => self.axes.rx,
20 AxisId::RY => self.axes.ry,
21 AxisId::RZ => self.axes.rz,
22 AxisId::Pitch => self.axes.pitch,
23 AxisId::Roll => self.axes.roll,
24 AxisId::Throttle => self.axes.throttle,
25 }
26 }
27
28 pub fn get_button(&self, id: &ButtonId) -> bool {
30 match id {
31 ButtonId::Cross => self.buttons.cross,
32 ButtonId::Square => self.buttons.square,
33 ButtonId::Circle => self.buttons.circle,
34 ButtonId::Triangle => self.buttons.triangle,
35 ButtonId::L1 => self.buttons.l1,
36 ButtonId::R1 => self.buttons.r1,
37 ButtonId::L2 => self.buttons.l2,
38 ButtonId::R2 => self.buttons.r2,
39 ButtonId::L3 => self.buttons.l3,
40 ButtonId::R3 => self.buttons.r3,
41 ButtonId::Opt => self.buttons.option,
42 ButtonId::Share => self.buttons.share,
43 ButtonId::Mic => self.buttons.mic,
44 ButtonId::TouchClick => self.buttons.touch_click,
45 ButtonId::Ps => self.buttons.ps,
46 }
47 }
48}