Skip to main content

bevy_input/
gestures.rs

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