Microsoft DirectX 8.0 (Visual Basic) |
DirectInputDevice8.GetEffectsEnum メソッドは、デバイスによりサポートされるエフェクトを列挙する。このメソッドは、サポートされるエフェクトのコレクションを表す DirectInputEnumEffects オブジェクトを返す。DirectInputEnumEffects の各メソッドを使うと、特定のエフェクトに関する情報を取得できる。
"サポートされるエフェクト" と "生成されるエフェクト" ("エフェクト オブジェクト") の両者を区別することが重要である。サポートされるエフェクトは、エンベロープによって形成できるコンスタント フォースである。しかし、このエフェクトには、マグニチュード、方向、継続時間、アタックまたはフェードなどのプロパティがまったくない。アプリケーションでエフェクト オブジェクトを生成するときは、これらのプロパティを設定する。サポートされるエフェクトは、それぞれ異なるパラメータを持つ多くのエフェクト オブジェクトによって表すことができる。たとえば、それぞれ異なる継続時間、マグニチュードおよび方向を持つ複数のコンスタント フォースによって表すことができる。
次のコードは、アプリケーションがハードウェア固有のエフェクトを列挙して、Microsoft® SideWinder® ジョイスティックによりサポートされる固有のエフェクトを探す例である。目的のエフェクトが見つからない場合は、アプリケーションは標準エフェクトのいずれかを代用する。
Const BasketballDribble = _ "{E84CD1AC-81FA-11D0-94AB-0080C74C7E95}" Dim diEnumEffects As DirectInputEnumEffects Dim EffGuid As String Dim i As Integer ' diDev は DirectInputDevice オブジェクトである。 Set diEnumEffects = didev.GetEffectsEnum(DIEFT_HARDWARE) For i = 1 To diEnumEffects.GetCount If diEnumEffects.GetEffectGuid(i) = BasketballDribble Then EffGuid = BasketballDribble Exit For End If Next i If EffGuid <> BasketballDribble Then EffGuid = "GUID_Sine" ' ここで、列挙されたドリブルのパラメータを設定する。 . . . End If
最後に EffGuid を DirectInputDevice8.CreateEffect に渡す。