SDL_HapticEffect Union Reference

The generic template for any haptic effect. More...

`#include <SDL_haptic.h>`

Collaboration diagram for SDL_HapticEffect:
[legend]

## Data Fields

Uint16 | type
SDL_HapticConstant | constant
SDL_HapticPeriodic | periodic
SDL_HapticCondition | condition
SDL_HapticRamp | ramp
SDL_HapticLeftRight | leftright
SDL_HapticCustom | custom

## Detailed Description

The generic template for any haptic effect.

All values max at 32767 (0x7FFF). Signed values also can be negative. Time values unless specified otherwise are in milliseconds.

You can also pass SDL_HAPTIC_INFINITY to length instead of a 0-32767 value. Neither delay, interval, attack_length nor fade_length support SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends.

Additionally, the SDL_HAPTIC_RAMP effect does not support a duration of SDL_HAPTIC_INFINITY.

Button triggers may not be supported on all devices, it is advised to not use them if possible. Buttons start at index 1 instead of index 0 like the joystick.

If both attack_length and fade_level are 0, the envelope is not used, otherwise both values are used.

Common parts:

// Replay - All effects have this
Uint32 length; // Duration of effect (ms).
Uint16 delay; // Delay before starting effect.
// Trigger - All effects have this
Uint16 button; // Button that triggers effect.
Uint16 interval; // How soon before effect can be triggered again.
// Envelope - All effects except condition effects have this
Uint16 attack_length; // Duration of the attack (ms).
Uint16 attack_level; // Level at the start of the attack.
Uint16 fade_length; // Duration of the fade out (ms).
Uint16 fade_level; // Level at the end of the fade.

Here we have an example of a constant effect evolution in time:

    Strength
    ^
    |
    |    effect level -->  _________________
    |                     /                 \
    |                    /                   \
    |                   /                     \
    |                  /                       \
    | attack_level --> |                        \
    |                  |                        |  <---  fade_level
    |
    +--------------------------------------------------> Time
                       [--]                 [---]
                       attack_length        fade_length

    [------------------][-----------------------]
    delay               length

Note either the attack_level or the fade_level may be above the actual effect level.

See also
  SDL_HapticConstant
  SDL_HapticPeriodic
  SDL_HapticCondition
  SDL_HapticRamp
  SDL_HapticLeftRight
  SDL_HapticCustom

Definition at line 785 of file SDL_haptic.h.

## Field Documentation

SDL_HapticCondition SDL_HapticEffect::condition

Condition effect.

Definition at line 791 of file SDL_haptic.h.

Referenced by main().

SDL_HapticConstant SDL_HapticEffect::constant

Constant effect.

Definition at line 789 of file SDL_haptic.h.

Referenced by main().

SDL_HapticCustom SDL_HapticEffect::custom

Custom effect.

Definition at line 794 of file SDL_haptic.h.

SDL_HapticLeftRight SDL_HapticEffect::leftright

Left/Right effect.

Definition at line 793 of file SDL_haptic.h.

Referenced by main(), SDL_HapticRumbleInit(), and SDL_HapticRumblePlay().

SDL_HapticPeriodic SDL_HapticEffect::periodic

Periodic effect.

Definition at line 790 of file SDL_haptic.h.

Referenced by main(), SDL_HapticRumbleInit(), and SDL_HapticRumblePlay().

SDL_HapticRamp SDL_HapticEffect::ramp

Ramp effect.

Definition at line 792 of file SDL_haptic.h.

Referenced by main().

Uint16 SDL_HapticEffect::type

Effect type.

Definition at line 788 of file SDL_haptic.h.

Referenced by main(), SDL_HapticEffectSupported(), SDL_HapticRumbleInit(), SDL_HapticRumblePlay(), and SDL_HapticUpdateEffect().

The documentation for this union was generated from the following file:

- include/SDL_haptic.h