Microsoft DirectX 8.0 (C++) |
単一軸エフェクトの方向の設定は、実際に指定するものが何もないので、単純である。DIEFF_CARTESIAN フラグを DIEFFECT 構造体の dwFlags メンバに設定し、値がゼロの単一の LONG を指す rglDirection を設定する。
次のコードは、x 軸エフェクトの方向と軸パラメータを設定する例である。
DIEFFECT eff; LONG lZero = 0; // 方向なし。 DWORD dwAxis = DIJOFS_X; // x 軸エフェクト。 ZeroMemory(&eff, sizeof(DIEFFECT)); eff.cAxes = 1; // 1 つの軸。 eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS; // フラグ。 eff.rglDirection = &lZero; // 方向。 eff.rgdwAxes = &dwAxis; // エフェクトの軸。
極座標 2 軸エフェクトの方向の設定は少し複雑である。DIEFF_POLAR フラグを dwFlags に設定し、2 つの LONG からなる 1 つの配列を指すように rglDirection を設定する。こうすると、この配列の第 1 の要素が、エフェクトが来る方向になる。この配列の第 2 の要素はゼロでなくてはならない。
次のコードは、東から来る 2 軸エフェクトの方向と軸パラメータを設定する例である。
DIEFFECT eff; LONG rglDirection[2] = { 90 * DI_DEGREES, 0 }; DWORD rgdwAxes[2] = { DIJOFS_X, DIJOFS_Y }; // x 軸と y 軸。 ZeroMemory(&eff, sizeof(DIEFFECT)); eff.cAxes = 2; // 2 つの軸。 eff.dwFlags = DIEFF_POLAR | DIEFF_OBJECTOFFSETS; // フラグ。 eff.rglDirection = rglDirection; // 方向。 eff.rgdwAxes = rgdwAxes; // エフェクトの軸。
デカルト座標 2 軸エフェクトの方向の設定は少し複雑である。DIEFF_CARTESIAN フラグを dwFlags に設定し、ここでも、2 つの LONG からなる 1 つの配列を指すように rglDirection を設定する。このときの配列の第 1 要素は方向ベクトルの x 座標で、第 2 要素は y 座標である。
次のコードは、東から来る 2 軸エフェクトの方向と軸パラメータを設定する例である
DIEFFECT eff; LONG rglDirection[2] = { 1, 0 }; // 正値 x = 東。 DWORD rgdwAxes[2] = { DIJOFS_X, DIJOFS_Y }; // x 軸と y 軸。 ZeroMemory(&eff, sizeof(DIEFFECT)); eff.cAxes = 2; // 2 つの軸。 eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS; // フラグ。 eff.rglDirection = rglDirection; // 方向。 eff.rgdwAxes = rgdwAxes; // エフェクトの軸。