Mit den folgenden Funktionen können Sie Ihrem Spiel Unterstützung für Mausgeräte hinzufügen, indem Sie die Game Controller-Bibliothek verwenden. Wir verwenden den Begriff „Mausgeräte“ hier, um sowohl herkömmliche Mäuse als auch Touchpads oder Trackballs zu beschreiben.
Mausstatus-Callback hinzufügen
Die Game Controller-Bibliothek verwendet einen Mausstatus-Callback, um ein Spiel zu benachrichtigen, wenn eine Maus angeschlossen oder getrennt wird. Es wird jeweils nur ein Rückruf für den Mausstatus unterstützt.
- Wenn Sie einen Mausstatus-Callback registrieren oder einen zuvor registrierten Callback durch eine neue Callback-Funktion ersetzen möchten, rufen Sie die Funktion
Paddleboat_setMouseStatusCallback
auf. - Wenn Sie einen aktuell registrierten Callback entfernen möchten, übergeben Sie
NULL
odernullptr
im ParameterstatusCallback
. - Der Parameter
userData
ist ein optionaler Zeiger auf benutzerdefinierte Daten. Der ParameteruserData
wird an die Callback-Funktion übergeben. Dieser Zeiger wird intern beibehalten, bis er durch einen anderen Aufruf vonPaddleboat_setMouseStatusCallback
geändert wird.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
Die Funktionssignatur der Mausstatus-Callback-Funktion lautet:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
Der Enum-Parameter mouseStatus
hat drei mögliche Werte:
PADDLEBOAT_MOUSE_NONE
: Derzeit ist keine Maus angeschlossen.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Ein verbundener Controller simuliert eine Maus.PADDLEBOAT_MOUSE_PHYSICAL
: Es sind eine oder mehrere physische Mäuse angeschlossen. Dazu gehören Mäuse, Touchpads, Trackballs und ähnliche Geräte.
Der Parameter userData
enthält den userData
-Zeiger, der im letzten Aufruf von Paddleboat_setMouseStatusCallback
angegeben wurde. userData
kann NULL oder nullptr
sein.
Nicht alle Controller simulieren eine Maus. Controller können eine Maus mit einem der Analogsticks oder mit einem integrierten Touchpad simulieren.
Die Game Controller-Bibliothek meldet nur Daten von einem einzelnen Mausgerät. Physische Mäuse haben Vorrang vor virtuellen Controllermäusen. Wenn eine physische Maus angeschlossen ist, übernimmt sie die Steuerung von einer zuvor aktiven virtuellen Controller-Maus.
Mausdaten lesen
Rufen Sie die Funktion Paddleboat_getMouseStatus
auf, um den Status des Mausgeräts abzurufen.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Mit der Funktion Paddleboat_getMouseData
können Sie die aktuellen Mausdaten abrufen. Diese Funktion gibt PADDLEBOAT_NO_ERROR
zurück, wenn Daten erfolgreich gelesen wurden. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
Die Paddleboat_Mouse_Data
-Struktur enthält Informationen zu:
- Zeitstempel des letzten Maus-Eingabeereignisses
- Die aktuelle Zeigerposition
- Status der Maustasten
- Status von Mausrädern
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
Gebäudemitglied | Beschreibung |
---|---|
timestamp
|
Zeitstempel des letzten Maus-Eingabeereignisses. Der Zeitstempelwert wird in Mikrosekunden seit der Takt-Epoche angegeben. |
buttonsDown
|
Bitfeld. Jedes Bit ab Bit 0 gibt an, ob eine Taste gedrückt ist, wenn es gesetzt ist. |
mouseX mouseY
|
Mausposition in Pixelkoordinaten.
Die Koordinaten für die Position haben einen Bereich von 0.0 bis zur Bildschirmbreite und ‑höhe. |
mouseScrollDeltaH mouseScrollDeltaV
|
Die Anzahl der kumulativen Mausrad-Ereignisse seit dem letzten Aufruf von Paddleboat_getMouseData . Diese Werte sind nicht garantiert genau, sondern geben nur einen Hinweis auf die Scrollradaktivität in einer bestimmten Richtung. Die meisten Mäuse haben ein Scrollrad, das in mouseScrollDeltaV gemeldet wird. Wenn eine Maus ein seitliches Scrollrad hat, wird dies in mouseScrollDeltaH angegeben. Diese Werte werden nach einem Aufruf von Paddleboat_getMouseData intern auf 0 zurückgesetzt. |
In der Headerdatei für die paddleboat.h
-Schnittstelle sind Bitmaskenkonstanten für Maustasten definiert:
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)
};
Physische und virtuelle Mausgeräte
Ein Paddleboat_MouseStatus
von PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
gibt an, dass kein physisches Mausgerät vorhanden ist und die Game Controller-Bibliothek eine virtuelle Maus mit einem verbundenen Controller simuliert. Der niedrigste verbundene Controllerindex mit dem Flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
wird als virtuelle Maus verwendet. Bei virtuellen Mäusen werden garantiert nur mouseX
- und mouseY
-Koordinaten gemeldet. Virtuelle Mäuse melden möglicherweise Drückvorgänge von einer einzelnen (linken) Maustaste, dies ist jedoch nicht garantiert.