
# Objective - With the recent winit update, touchpad specific events can also be triggered on mobile ## Solution - Rename them to gestures and add support for the new ones ## Testing - Tested on the mobile example on iOS https://github.com/bevyengine/bevy/assets/8672791/da4ed23f-ff0a-41b2-9dcd-726e8546bef2 ## Migration Guide - `TouchpadMagnify` has been renamed to `PinchGesture` - `TouchpadRotate` has been renamed to `RotationGesture ` --------- Co-authored-by: mike <ramirezmike2@gmail.com>
74 lines
2.0 KiB
Rust
74 lines
2.0 KiB
Rust
//! Gestures functionality, from touchscreens and touchpads.
|
|
|
|
use bevy_ecs::event::Event;
|
|
use bevy_math::Vec2;
|
|
use bevy_reflect::Reflect;
|
|
|
|
#[cfg(feature = "serialize")]
|
|
use bevy_reflect::{ReflectDeserialize, ReflectSerialize};
|
|
|
|
/// Two-finger pinch gesture, often used for magnifications.
|
|
///
|
|
/// Positive delta values indicate magnification (zooming in) and
|
|
/// negative delta values indicate shrinking (zooming out).
|
|
///
|
|
/// ## Platform-specific
|
|
///
|
|
/// - Only available on **`macOS`** and **`iOS`**.
|
|
/// - On **`iOS`**, must be enabled first
|
|
#[derive(Event, Debug, Clone, Copy, PartialEq, Reflect)]
|
|
#[reflect(Debug, PartialEq)]
|
|
#[cfg_attr(
|
|
feature = "serialize",
|
|
derive(serde::Serialize, serde::Deserialize),
|
|
reflect(Serialize, Deserialize)
|
|
)]
|
|
pub struct PinchGesture(pub f32);
|
|
|
|
/// Two-finger rotation gesture.
|
|
///
|
|
/// Positive delta values indicate rotation counterclockwise and
|
|
/// negative delta values indicate rotation clockwise.
|
|
///
|
|
/// ## Platform-specific
|
|
///
|
|
/// - Only available on **`macOS`** and **`iOS`**.
|
|
/// - On **`iOS`**, must be enabled first
|
|
#[derive(Event, Debug, Clone, Copy, PartialEq, Reflect)]
|
|
#[reflect(Debug, PartialEq)]
|
|
#[cfg_attr(
|
|
feature = "serialize",
|
|
derive(serde::Serialize, serde::Deserialize),
|
|
reflect(Serialize, Deserialize)
|
|
)]
|
|
pub struct RotationGesture(pub f32);
|
|
|
|
/// Double tap gesture.
|
|
///
|
|
/// ## Platform-specific
|
|
///
|
|
/// - Only available on **`macOS`** and **`iOS`**.
|
|
/// - On **`iOS`**, must be enabled first
|
|
#[derive(Event, Debug, Clone, Copy, PartialEq, Reflect)]
|
|
#[reflect(Debug, PartialEq)]
|
|
#[cfg_attr(
|
|
feature = "serialize",
|
|
derive(serde::Serialize, serde::Deserialize),
|
|
reflect(Serialize, Deserialize)
|
|
)]
|
|
pub struct DoubleTapGesture;
|
|
|
|
/// Pan gesture.
|
|
///
|
|
/// ## Platform-specific
|
|
///
|
|
/// - On **`iOS`**, must be enabled first
|
|
#[derive(Event, Debug, Clone, Copy, PartialEq, Reflect)]
|
|
#[reflect(Debug, PartialEq)]
|
|
#[cfg_attr(
|
|
feature = "serialize",
|
|
derive(serde::Serialize, serde::Deserialize),
|
|
reflect(Serialize, Deserialize)
|
|
)]
|
|
pub struct PanGesture(pub Vec2);
|