bevy_input/
gestures.rs

1//! Gestures functionality, from touchscreens and touchpads.
2
3use bevy_ecs::event::Event;
4use bevy_math::Vec2;
5#[cfg(feature = "bevy_reflect")]
6use bevy_reflect::Reflect;
7
8#[cfg(all(feature = "serialize", feature = "bevy_reflect"))]
9use bevy_reflect::{ReflectDeserialize, ReflectSerialize};
10
11/// Two-finger pinch gesture, often used for magnifications.
12///
13/// Positive delta values indicate magnification (zooming in) and
14/// negative delta values indicate shrinking (zooming out).
15///
16/// ## Platform-specific
17///
18/// - Only available on **`macOS`** and **`iOS`**.
19/// - On **`iOS`**, must be enabled first
20#[derive(Event, Debug, Clone, Copy, PartialEq)]
21#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(Debug, PartialEq))]
22#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
23#[cfg_attr(
24    all(feature = "serialize", feature = "bevy_reflect"),
25    reflect(Serialize, Deserialize)
26)]
27pub struct PinchGesture(pub f32);
28
29/// Two-finger rotation gesture.
30///
31/// Positive delta values indicate rotation counterclockwise and
32/// negative delta values indicate rotation clockwise.
33///
34/// ## Platform-specific
35///
36/// - Only available on **`macOS`** and **`iOS`**.
37/// - On **`iOS`**, must be enabled first
38#[derive(Event, Debug, Clone, Copy, PartialEq)]
39#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(Debug, PartialEq))]
40#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
41#[cfg_attr(
42    all(feature = "serialize", feature = "bevy_reflect"),
43    reflect(Serialize, Deserialize)
44)]
45pub struct RotationGesture(pub f32);
46
47/// Double tap gesture.
48///
49/// ## Platform-specific
50///
51/// - Only available on **`macOS`** and **`iOS`**.
52/// - On **`iOS`**, must be enabled first
53#[derive(Event, Debug, Clone, Copy, PartialEq)]
54#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(Debug, PartialEq))]
55#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
56#[cfg_attr(
57    all(feature = "serialize", feature = "bevy_reflect"),
58    reflect(Serialize, Deserialize)
59)]
60pub struct DoubleTapGesture;
61
62/// Pan gesture.
63///
64/// ## Platform-specific
65///
66/// - On **`iOS`**, must be enabled first
67#[derive(Event, Debug, Clone, Copy, PartialEq)]
68#[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(Debug, PartialEq))]
69#[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
70#[cfg_attr(
71    all(feature = "serialize", feature = "bevy_reflect"),
72    reflect(Serialize, Deserialize)
73)]
74pub struct PanGesture(pub Vec2);