Microsoft DirectX 8.0 (C++)

DIEFFECT

IDirectInputDevice8::CreateEffect メソッドが、新しい IDirectInputEffect オブジェクトを初期化するために使用する。IDirectInputEffect::SetParameters および IDirectInputEffect::GetParameters メソッドによっても使用される。

typedef struct DIEFFECT { 
    DWORD   dwSize; 
    DWORD   dwFlags; 
    DWORD   dwDuration; 
    DWORD   dwSamplePeriod; 
    DWORD   dwGain; 
    DWORD   dwTriggerButton; 
    DWORD   dwTriggerRepeatInterval;
    DWORD   cAxes; 
    LPDWORD rgdwAxes; 
    LPLONG  rglDirection; 
    LPDIENVELOPE lpEnvelope; 
    DWORD   cbTypeSpecificParams; 
    LPVOID  lpvTypeSpecificParams; 
    DWORD   dwStartDelay; 
} DIEFFECT, *LPDIEFFECT; 
 
typedef const DIEFFECT *LPCDIEFFECT;

メンバ

dwSize
構造体のバイト単位のサイズ。このメンバは、構造体が使われる前に初期化されなければならない。
dwFlags
エフェクトに関連付けられたフラグ。この値は、以下の値の 1 つ以上の組み合わせとなる。
DIEFF_CARTESIAN
rglDirection の値は、デカルト座標として解釈する。
DIEFF_OBJECTIDS
dwTriggerButton および rgdwAxes の値は、IDirectInputDevice8::EnumObjects によって取得されるオブジェクト識別子である。
DIEFF_OBJECTOFFSETS
dwTriggerButton および rgdwAxes の値は、データ形式のオフセットである。
DIEFF_POLAR
rglDirection の値は、極座標と解釈する。
DIEFF_SPHERICAL
rglDirection の値は、球状座標と解釈する。
dwDuration
エフェクトのマイクロ秒単位の継続時間の合計。この値が INFINITE であれば、エフェクトの継続時間は無限となる。エンベロープがエフェクトに適用されていれば、アタックも適用され、無限の維持期間も適用されることになる。
dwSamplePeriod
デバイスがエフェクトを再生すべき間隔。マイクロ秒単位。この値がゼロであれば、デフォルトの再生サンプリング速度を使用することを意味する。

デバイスが指定の速度でエフェクトを再生できなければ、指定された値に最も近い速度を選択する。

カスタム dwSamplePeriod の設定は、特殊効果に使用できる。たとえば、サイン波を意図的に大きなサンプリングレートで再生すると、ざらざらした質感をもたらす。

dwGain
エフェクトに適用されるゲイン。0 〜 10,000 の範囲にある。ゲインとは、エフェクトの全マグニチュードとそのエンベロープに適用されるスケーリング係数である。
dwTriggerButton
エフェクトの再生をトリガするのに使用されるボタンの識別子またはオフセット。DIEFF_OBJECTIDS および DIEFF_OBJECTOFFSETS の各フラグが、この値の意味内容を決定する。このメンバに DIEB_NOTRIGGER が設定されている場合、エフェクトに関連付けられているトリガ ボタンはない。
dwTriggerRepeatInterval
ボタンの押下および押し続けによってエフェクトがトリガされたときの、1 回の再生の終了と開始の間隔を表す、マイクロ秒単位の時間。繰り返しを抑制するには、この値を INFINITE に設定する。

DIEFFECTINFO 構造体の dwStaticParams メンバに DIEP_TRIGGERREPEATINTERVAL フラグが設定されている場合は、1 つのエフェクトのトリガによる繰り返しが可能である。

cAxes
エフェクトに関連している軸の数。軸リストまたは方向リストの変更または設定時には、呼び出し側がこのメンバを設定しておかなければならない。

エフェクトの軸数は、一度設定されると変更できない。

rgdwAxes
(cAxes 要素から成る) DWORD 配列へのポインタ。この DWORD 配列は、エフェクトを適用する対象の軸を識別する識別子またはオフセットを格納する。DIEFF_OBJECTIDS および DIEFF_OBJECTOFFSETS の各フラグが、配列の値の意味内容を決定する。

エフェクトに関連付けられた軸のリストは、一度設定されると変更できない。

単一のエフェクトに関連付けられる軸の数は、32 までである。

rglDirection
デカルト座標、極座標、または球状座標を格納する (cAxes 要素から成る) LONG 配列へのポインタ。DIEFF_CARTESIAN、DIEFF_POLAR および DIEFF_SPHERICAL の各フラグが配列の値の意味内容を決定する。

デカルト座標では、rglDirection の各値は、rgdwAxes の対応する軸に関連付けられる。

極座標では、角度は、(0, -1) 方向から (1, 0) の方向に回転する実角度の 100 倍で測定される。これが意味するのは、北はユーザーの正面の方向であり、東はユーザーの右側であるということである。最後の要素は使用されない。

球状座標では、第 1 の角度は、(1,0) の方向から (0,1) の方向へ回転した実角度の 100 倍で計測される。第 2 の角度は (軸の数が 3 以上であるとき)、(0,0,1) へ向かう実角度の 100 倍で計測される。第 3 の角度は (軸の数が 4 以上であるとき)、(0,0,0,1) へ向かう実角度の 100 倍で計測される。以下も同様に解釈する。最後の要素は使用されない。

 :  rglDirection 配列は、極座標または球状座標が指定されている場合でも cAxes エントリを含まなければならない。極座標または球面座標の場合、rglDirection 配列の最後の要素は、将来の用途のために予約されているので、ゼロでなければならない。

lpEnvelope
このエフェクトが使用するエンベロープを表す DIENVELOPE 構造体へのオプション ポインタ。すべてのエフェクト タイプが、エンベロープを使用するとは限らない。エンベロープの適用がなければ、このメンバには、NULL を設定する必要がある。
cbTypeSpecificParams
対応するエフェクト タイプに関する追加のタイプ固有パラメータのバイト数。
lpvTypeSpecificParams
タイプ固有パラメータへのポインタ。タイプ固有パラメータが存在しない場合には NULL。

エフェクトが DIEFT_CONDITION 型であれば、このメンバは、条件のパラメータを定義する DICONDITION 構造体からなる配列へのポインタを持つ。1 つの構造体を使用してもよい。この場合、条件は配列 rglDirection で指定された方向に適用される。そうでない場合は、配列 rgdwAxes の軸と同じ順序で、それぞれの軸に対して 1 つの構造体が必要となる。それぞれの軸に 1 つの構造体を用意すると、エフェクトは回転しない。配列 rglDirection では次の値を使用しなければならない。

エフェクトが DIEFT_CUSTOMFORCE 型であれば、このメンバは、カスタム フォースのパラメータを定義する DICUSTOMFORCE 構造体へのポインタを持つ。

エフェクトが DIEFT_PERIODIC 型であれば、このメンバは、エフェクトのパラメータを定義する DIPERIODIC 構造体へのポインタを持つ。

エフェクトが DIEFT_CONSTANTFORCE 型であれば、このメンバは、コンスタント フォースのパラメータを定義する DICONSTANTFORCE 構造体へのポインタを持つ。

エフェクトが DIEFT_RAMPFORCE 型であれば、このメンバは、傾斜フォースのパラメータを定義する DIRAMPFORCE 構造体へのポインタを持つ。

dwStartDelay
IDirectInputEffect::Start を呼び出してからエフェクトを再生する前に、デバイスが待機する時間 (マイクロ秒単位)。この値がゼロであれば、エフェクトの再生は直ちに開始される。このメンバは、Microsoft® DirectX® 7.0 より前のバージョンには存在しない。

動作環境

  Windows NT/2000 : Windows 2000 以降に対する再配布可能ファイルとして提供。
  Windows 95/98 : Windows 95 以降に対する再配布可能ファイルとして提供。
  ヘッダー : dinput.h で宣言。