目次 - SDL 3.0 API(機能別) - 力覚フィードバック - SDL_HapticEffect

SDL_HapticEffect

ハプティックエフェクトの全テンプレートの共用体

ヘッダ

SDL3/SDL_haptic.h

フィールド

SDL_HapticEffectTypetypeエフェクトの種類
SDL_HapticConstantconstant一定エフェクト
SDL_HapticPeriodicperiodic周期エフェクト
SDL_HapticConditioncondition条件エフェクト
SDL_HapticRampramp増減エフェクト
SDL_HapticLeftRightleftright左右エフェクト
SDL_HapticCustomcustomカスタムエフェクト

詳細

全ての項目の最大値は32767(0x7FFF)で, 符号ありの型の場合は負の数も可能である. 時間の項目は, 特別な場合を除き, ミリ秒単位である.

lengthには0~32767の代わりにSDL_HAPTIC_INFINITYを渡すことができる. delay, interval, attack_length, fade_lengthSDL_HAPTIC_INFINITYに対応していない. 立ち下がりの値はエフェクトが終わるまで使われない.

さらに, SDL_HAPTIC_RAMPの継続時間(attack_length, fade_length)はSDL_HAPTIC_INFINITYに対応していない.

ボタントリガは全てのデバイスには対応していないため, 可能ならば使わない方がよい. ボタン番号はジョイスティックとは異なり1から始まる.

attack_lengthfade_levelの両方が0ならば, エンベロープは使われない. どちらかが0を超えていれば使われる.

この共用体に含まれる全ての構造体には次の項目がある:

再生 (この要目は左右エフェクトを除く全てのエフェクトにある)
Uint32length継続時間(ミリ秒)
Uint16delayエフェクトが始まるまでの待ち時間
トリガ (この要目は左右エフェクトを除く全てのエフェクトにある)
Uint16buttonエフェクトを引き起こすボタン
Uint16intervalエフェクトを再び引き起こす時間
エンベロープ (この要目は条件エフェクトと左右エフェクトを除く全てのエフェクトにある)
Uint16attack_length立ち上がりの継続時間(ミリ秒)
Uint16attack_level立ち上がりの強さ
Uint16fade_length立ち下げの継続時間(ミリ秒)
Uint16fade_level立ち下げの強さ

一定エフェクトのエンベロープの時間は次のようになっている:

強さ
^
|
|    effect level -->  _________________
|                     /                 ¥
|                    /                   ¥
|                   /                     ¥
|                  /                       ¥ 
| attack_level --> |                        ¥
|                  |                        |  <---  fade_level
|
+--------------------------------------------------> 時間

                   [--]                 [---]
               attack_length          fade_length

[------------------][-----------------------]

attack_levelfade_levelは, effect levelより上であることに注意すること.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_HapticEffect - SDL Wiki