Mit den folgenden Funktionen können Sie Ihrem Spiel mithilfe der Controller-Bibliothek Mausgeräte hinzufügen. Der Begriff „Mausgeräte“ bezieht sich hier sowohl auf herkömmliche Mäuse als auch für Touchpads oder Trackballs.
Mausstatus-Callback hinzufügen
Die Game Controller-Bibliothek verwendet einen Mausstatus-Callback, um ein Spiel zu benachrichtigen, wenn eine Maus verbunden oder getrennt wird. Es unterstützt jeweils nur einen Mausstatus-Callback.
- Wenn Sie einen Mausstatus-Callback registrieren oder einen zuvor registrierten Callback durch eine neue Callback-Funktion ersetzen möchten, rufen Sie die
Paddleboat_setMouseStatusCallback
-Funktion auf. - Wenn Sie einen derzeit 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 Callback-Funktion für den Mausstatus lautet:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
Der enum-Parameter mouseStatus
hat drei mögliche Werte:
PADDLEBOAT_MOUSE_NONE
: Es ist derzeit kein Mausgerät verbunden.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Ein verbundener Controller simuliert eine Maus.PADDLEBOAT_MOUSE_PHYSICAL
: Mindestens ein physisches Mausgerät ist verbunden. Dazu gehören eine Maus, ein Touchpad, ein Trackball oder andere ä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 Mausgeräte haben Priorität vor Mausgeräten mit virtuellem Controller. Wenn eine physische Maus angeschlossen ist, übernimmt sie alle zuvor aktiven Maus des virtuellen Controllers.
Mausdaten lesen
Rufen Sie die Funktion Paddleboat_getMouseStatus
auf, um den Status des Mausgeräts zu erhalten.
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 Mauseingabeereignisses
- Die aktuelle Zeigerposition
- Status der Maustasten
- Status der Mausräder
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 Mauseingabeereignisses. Der Zeitstempelwert wird in Mikrosekunden seit der Uhrzeit angegeben. |
buttonsDown
|
Bitfeld. Jedes Bit ab Bit 0 bedeutet, dass die Schaltfläche abgesetzt ist, sofern festgelegt. |
mouseX mouseY
|
Mausposition in Pixelkoordinaten.
Positionskoordinaten haben einen Bereich von 0.0 bis zur Bildschirmbreite und -höhe. |
mouseScrollDeltaH mouseScrollDeltaV
|
Anzahl der kumulativen Scrollradereignisse der Maus: seit dem vorherigen Aufruf von Paddleboat_getMouseData . Diese Werte sind nicht zwangsläufig präzise. Sie geben lediglich einen Hinweis auf die Scrollradaktivität in einer bestimmten Richtung. Die meisten Mäuse haben nur ein Scrollrad. Dies wird in mouseScrollDeltaV angegeben. Wenn eine Maus ein seitliches Laufrad hat, wird dies in mouseScrollDeltaH gemeldet. Diese Werte werden nach einem Aufruf von Paddleboat_getMouseData intern auf 0 zurückgesetzt. |
Die Game Controller-Bibliothek definiert Bitmaskenkonstanten für Maustasten in der paddleboat.h
-Schnittstellenheaderdatei:
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 Mäuse im Vergleich
Ein Paddleboat_MouseStatus
mit dem Wert PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
bedeutet, dass keine physische Maus vorhanden ist und die Game Controller-Bibliothek eine virtuelle Maus mithilfe eines verbundenen Controllers simuliert. Der niedrigste verbundene Controller-Index mit dem gesetzten Flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
wird als virtuelle Maus verwendet. Virtuelle Mausgeräte melden garantiert nur mouseX
- und mouseY
-Koordinaten. Virtuelle Mäuse können das Drücken einer einzigen (linken) Maustaste melden. Das ist jedoch nicht garantiert.