Game Controller ライブラリを使用して、ゲームにマウスデバイスのサポートを追加するには、以下に示す関数を使用します。ここでは、従来のマウスに加え、トラックパッドやトラックボールも含めてマウスデバイスと呼びます。
マウス ステータス コールバックを追加する
Game Controller ライブラリは、マウス ステータス コールバックを使用して、マウスが接続または切断されたときにゲームに通知します。一度にサポートされるマウス ステータス コールバックは 1 つだけです。
- マウス ステータス コールバックを登録するか、以前登録したコールバックを新しいコールバック関数に置き換えるには、
Paddleboat_setMouseStatusCallback
関数を呼び出します。 - 現在登録されているコールバックを削除するには、
statusCallback
パラメータでNULL
またはnullptr
を渡します。 userData
パラメータは、ユーザー定義データへのポインタです(省略可能)。userData
パラメータはコールバック関数に渡されます。このポインタは、次回のPaddleboat_setMouseStatusCallback
呼び出しによって変更されるまで、内部的に保持されます。
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
マウス ステータス コールバック関数の関数シグネチャを次に示します。
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
mouseStatus
列挙型パラメータには、次の 3 つの値があります。
PADDLEBOAT_MOUSE_NONE
: マウスデバイスは現在接続されていません。PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: 接続されたコントローラがマウスをシミュレートしています。PADDLEBOAT_MOUSE_PHYSICAL
: 1 つ以上の物理マウスデバイスが接続されています(このデバイスには、マウス、タッチパッド、トラックボール、またはそれらに似たデバイスが含まれます)。
userData
パラメータには、前回の Paddleboat_setMouseStatusCallback
呼び出しで指定された userData
ポインタが含まれています。userData
は NULL または nullptr
である可能性があります。
すべてのコントローラがマウスをシミュレートするとは限りません。コントローラは、アナログ スティックの 1 つまたは統合されたタッチパッドを使用して、マウスをシミュレートすることがあります。
Game Controller ライブラリは、単一のマウスデバイスからのデータのみを報告します。物理マウスデバイスは、仮想コントローラ マウスデバイスより優先されます。物理マウスが接続されている場合は、以前アクティブだった任意の仮想コントローラ マウスを引き継ぎます。
マウスデータを読み取る
マウスデバイスのステータスを取得するには、Paddleboat_getMouseStatus
関数を呼び出します。
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
現在のマウスデータを取得するには、Paddleboat_getMouseData
関数を使用します。データが正常に読み取られた場合、この関数は PADDLEBOAT_NO_ERROR
を返します。それ以外の場合は、適切なエラーコードを返します。
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Paddleboat_Mouse_Data
構造体には以下に関する情報が含まれています。
- 最新のマウス入力イベントのタイムスタンプ
- 現在のポインタ位置
- マウスボタンのステータス
- マウスホイールのステータス
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
構造体メンバー | 説明 |
---|---|
timestamp
|
最新のマウス入力イベントのタイムスタンプ。タイムスタンプの値は、クロックのエポックからの経過時間(マイクロ秒)です。 |
buttonsDown
|
ビットフィールド。ビット 0 から始まる各ビットはボタンの押下状態を示します(設定されている場合)。 |
mouseX mouseY
|
ピクセル座標におけるマウスの位置。位置座標の範囲は、0.0 から画面の幅と高さまでです。 |
mouseScrollDeltaH mouseScrollDeltaV
|
前回の Paddleboat_getMouseData 呼び出し以降のマウス スクロール ホイール イベントの累積数。これらの値は、特定の方向へのスクロール ホイール アクティビティを示すことのみを目的としており、正確性は保証されていません。ほとんどのマウスはスクロール ホイールを 1 つ備えており、これは mouseScrollDeltaV で報告されます。マウスの側面にスクロール ホイールがある場合は、mouseScrollDeltaH で報告されます。これらの値は、Paddleboat_getMouseData 呼び出しの後で、内部的に 0 にリセットされます。 |
Game Controller ライブラリは、paddleboat.h
インターフェース ヘッダー ファイルで、マウスボタンのビットマスク定数を定義します。
enum Paddleboat_Mouse_Buttons {
PADDLEBOAT_MOUSE_BUTTON_LEFT = (1U << 0),
PADDLEBOAT_MOUSE_BUTTON_RIGHT = (1U << 1),
PADDLEBOAT_MOUSE_BUTTON_MIDDLE = (1U << 2),
PADDLEBOAT_MOUSE_BUTTON_BACK = (1U << 3),
PADDLEBOAT_MOUSE_BUTTON_FORWARD = (1U << 4),
PADDLEBOAT_MOUSE_BUTTON_6 = (1U << 5),
PADDLEBOAT_MOUSE_BUTTON_7 = (1U << 6),
PADDLEBOAT_MOUSE_BUTTON_8 = (1U << 7)
};
物理マウスデバイスと仮想マウスデバイス
PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
の Paddleboat_MouseStatus
は、物理マウスデバイスが存在せず、Game Controller ライブラリが接続済みのコントローラを使用して仮想マウスをシミュレートしていることを示します。PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
フラグが設定された最小の接続済みコントローラ インデックスが、仮想マウスとして使用されます。仮想マウスデバイスは、mouseX
座標と mouseY
座標のみを報告することが保証されています。仮想マウスデバイスは、単一の(左)マウスボタンの押下を報告することがありますが、この動作は保証されていません。