1use crate::error::GameResult;
2use crate::math::Vector;
3
4pub struct Touchpad {
5 scroll_delta: Vector,
6 pressure: f32,
7 click_stage: i64,
8}
9
10impl Touchpad {
11 pub(crate) fn new(_: TouchpadConfig) -> GameResult<Self> {
12 Ok(Self {
13 scroll_delta: Vector::zero(),
14 pressure: 0.0,
15 click_stage: 0,
16 })
17 }
18
19 pub(crate) fn handle_scroll_event(&mut self, delta: Vector) {
20 self.scroll_delta += delta;
21 }
22
23 pub(crate) fn handle_press_event(&mut self, pressure: f32, click_stage: i64) {
24 self.pressure = pressure;
25 self.click_stage = click_stage;
26 }
27
28 pub(crate) fn clear_states(&mut self) {
29 self.scroll_delta = Vector::zero();
30 }
31
32 pub fn scroll_delta(&self) -> Vector {
33 self.scroll_delta
34 }
35
36 pub fn pressure(&self) -> f32 {
37 self.pressure
38 }
39
40 pub fn click_stage(&self) -> i64 {
41 self.click_stage
42 }
43}
44
45#[derive(Debug, Clone)]
46pub struct TouchpadConfig {}
47
48impl TouchpadConfig {
49 pub fn new() -> Self {
50 Self {}
51 }
52}