[][src]Struct sdl2_sys::SDL_HapticDirection

#[repr(C)]pub struct SDL_HapticDirection {
    pub type_: Uint8,
    pub dir: [Sint32; 3],
}

\brief Structure that represents a haptic direction.

This is the direction where the force comes from, instead of the direction in which the force is exerted.

Directions can be specified by:

Cardinal directions of the haptic device are relative to the positioning of the device. North is considered to be away from the user.

The following diagram represents the cardinal directions: \verbatim .--. || .-------. |=.| |.-----.| |--| || || | | |'-----'| ||~')_____(' [ COMPUTER ]

North (0,-1) ^ | | (-1,0) West <----[ HAPTIC ]----> East (1,0) | | v South (0,1)

[ USER ] |||/ (o o) ---ooO-(_)-Ooo--- \endverbatim

If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses the first \c dir parameter. The cardinal directions would be:

If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses the first three \c dir parameters. The cardinal directions would be:

The Z axis represents the height of the effect if supported, otherwise it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you can use any multiple you want, only the direction matters.

If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. The first two \c dir parameters are used. The \c dir parameters are as follows (all values are in hundredths of degrees):

Example of force coming from the south with all encodings (force coming from the south means the user will have to pull the stick to counteract): \code SDL_HapticDirection direction;

// Cartesian directions direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. direction.dir[0] = 0; // X position direction.dir[1] = 1; // Y position // Assuming the device has 2 axes, we don't need to specify third parameter.

// Polar directions direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. direction.dir[0] = 18000; // Polar only uses first parameter

// Spherical coordinates direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. \endcode

\sa SDL_HAPTIC_POLAR \sa SDL_HAPTIC_CARTESIAN \sa SDL_HAPTIC_SPHERICAL \sa SDL_HapticEffect \sa SDL_HapticNumAxes

Fields

type_: Uint8

< The type of encoding.

dir: [Sint32; 3]

< The encoded direction.

Trait Implementations

impl Clone for SDL_HapticDirection[src]

impl Copy for SDL_HapticDirection[src]

Auto Trait Implementations

impl Send for SDL_HapticDirection

impl Sync for SDL_HapticDirection

impl Unpin for SDL_HapticDirection

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.