====== (This is the legacy documentation for stable SDL2, the current stable version; [https://wiki.libsdl.org/SDL3/ SDL3] is the current development version.) ======
== Draft ==
'''THIS PAGE IS A WORK IN PROGRESS''' ... Please make edits to this page to improve it!
= SDL_HapticCustom =
A structure containing a template for the ::[[SDL_HAPTIC_CUSTOM]] effect.
== Header File ==
Defined in [SDL_haptic.h](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_haptic.h), but apps should _only_ `#include "SDL.h"`!
== Syntax ==
typedef struct SDL_HapticCustom
{
/* Header */
Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */
SDL_HapticDirection direction; /**< Direction of the effect. */
/* Replay */
Uint32 length; /**< Duration of the effect. */
Uint16 delay; /**< Delay before starting the effect. */
/* Trigger */
Uint16 button; /**< Button that triggers the effect. */
Uint16 interval; /**< How soon it can be triggered again after button. */
/* Custom */
Uint8 channels; /**< Axes to use, minimum of one. */
Uint16 period; /**< Sample periods. */
Uint16 samples; /**< Amount of samples. */
Uint16 *data; /**< Should contain channels*samples items. */
/* Envelope */
Uint16 attack_length; /**< Duration of the attack. */
Uint16 attack_level; /**< Level at the start of the attack. */
Uint16 fade_length; /**< Duration of the fade. */
Uint16 fade_level; /**< Level at the end of the fade. */
} SDL_HapticCustom;
== Remarks ==
This struct is exclusively for the ::[[SDL_HAPTIC_CUSTOM]] effect.
A custom force feedback effect is much like a periodic effect, where the
application can define its exact shape. You will have to allocate the data
yourself. Data should consist of channels * samples Uint16 samples.
If channels is one, the effect is rotated using the defined direction.
Otherwise it uses the samples in data for the different axes.
== See Also ==
:[[SDL_HAPTIC_CUSTOM]]
:[[SDL_HapticEffect]]
== Data Fields ==
{|
|
|
|''Header''
|-
|Uint16
|'''type'''
|SDL_HAPTIC_CUSTOM
|-
|[[SDL_HapticDirection]]
|'''direction'''
|direction of the effect (relative to the user)
|-
|
|
|''Replay''
|-
|Uint32
|'''length'''
|duration of the effect
|-
|Uint16
|'''delay'''
|delay before starting the effect
|-
|
|
|''Trigger''
|-
|Uint16
|'''button'''
|button that triggers the effect
|-
|Uint16
|'''interval'''
|how soon it can be triggered again after '''button'''
|-
|
|
|''Custom''
|-
|Uint8
|'''channels'''
|axes to use, minimum of 1; see [[#Remarks|Remarks]] for details
|-
|Uint16
|'''period'''
|sample periods
|-
|Uint16
|'''samples'''
| amount (number) of samples
|-
|Uint16*
|'''data'''
|should contain '''channels'''*'''samples''' items; see [[#Remarks|Remarks]] for details
|-
|
|
|''Envelope''
|-
|Uint16
|'''attack_length'''
|duration of the attack
|-
|Uint16
|'''attack_level'''
|level at the start of the attack
|-
|Uint16
|'''fade_length'''
|duration of the fade
|-
|Uint16
|'''fade_level'''
|level at the end of the fade
|}
== Related Structures ==
:[[SDL_HapticDirection]]
:[[SDL_HapticEffect]]
----
[[CategoryAPI]], [[CategoryAPIStruct]], [[CategoryStruct]], [[CategoryForceFeedback]], [[CategoryDraft]]