Unterstützung für Mausgeräte hinzufügen

Mit den folgenden Funktionen kannst du in deinem Spiel Mausgeräte über die Game Controller-Bibliothek. Mit dem Begriff Mausgeräte beschreiben wir herkömmlichen Mäusen sowie Touchpads oder Trackballs.

Callback für den Mausstatus hinzufügen

Die Game Controller-Bibliothek verwendet einen Mausstatus-Callback, um ein Spiel zu benachrichtigen, wenn ein Die Maus ist verbunden oder nicht verbunden. Es wird nur ein Callback für den Mausstatus unterstützt. auf einmal ansehen.

  • Registrieren eines Mausstatus-Callbacks oder Ersetzen eines zuvor registrierten mit einer neuen Callback-Funktion aufrufen, Paddleboat_setMouseStatusCallback-Funktion.
  • Um einen derzeit registrierten Callback zu entfernen, übergeben Sie NULL oder nullptr im statusCallback-Parameter.
  • Der Parameter userData ist ein optionaler Zeiger auf benutzerdefinierte Daten. Die Der Parameter userData wird an die Callback-Funktion übergeben. Dieses Zeiger wird intern beibehalten, bis er durch einen anderen Aufruf von geändert wird. Paddleboat_setMouseStatusCallback
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: Momentan ist keine Maus verbunden.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: Ein verbundener Controller simuliert eine Simulation. mit der Maus.
  • PADDLEBOAT_MOUSE_PHYSICAL: Mindestens ein physisches Mausgerät ist verbunden. (Zu diesen Geräten gehören eine Maus, ein Touchpad, ein Trackball oder ähnlichen Geräten.

Der Parameter userData enthält den userData-Zeiger, der im letzten an Paddleboat_setMouseStatusCallback. userData kann NULL sein oder nullptr.

Nicht alle Controller simulieren eine Maus. Controller können eine Maus mit einem der Analogsticks oder mit integriertem Touchpad.

Die Game-Controller-Bibliothek erfasst nur Daten von einem einzelnen Mausgerät. Physische Mausgeräte haben Vorrang vor virtuellen Controller-Mausgeräten. Wenn ein physische Maus verbunden ist, übernimmt sie die Aufgabe aller zuvor aktiven virtuellen Controllermaus.

Mausdaten lesen

Rufen Sie die Funktion Paddleboat_getMouseStatus auf, um den Status des Mausgeräts abzurufen.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Verwenden Sie den Paddleboat_getMouseData. , um die aktuellen Mausdaten abzurufen. Diese Funktion gibt PADDLEBOAT_NO_ERROR, wenn Daten erfolgreich gelesen werden, andernfalls ein wird der entsprechende Fehlercode zurückgegeben.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

Die Struktur Paddleboat_Mouse_Data enthält Informationen zu:

  • Zeitstempel des letzten Mauseingabeereignisses
  • Die aktuelle Zeigerposition
  • Tastenstatus
  • 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 seitdem in Mikrosekunden angegeben. Epoche.
buttonsDown Bitfeld, jedes Bit ab Bit 0 steht für den Status einer Schaltfläche, falls festgelegt.
mouseX
mouseY
Mausposition in Pixelkoordinaten. Positionskoordinaten haben einen Bereich von 0.0 bis Bildschirmbreite und -höhe anpassen.
mouseScrollDeltaH
mouseScrollDeltaV
Die Anzahl der kumulativen Ereignisse mit dem Scrollrad der Maus : seit dem vorherigen Anruf bei Paddleboat_getMouseData Diese Werte sind nicht die garantiert präzise sind, nur um Scrollrad-Aktivität in einem in eine bestimmte Richtung weisen. Die meisten Mäuse haben eine Eins mit dem Mausrad, das in den mouseScrollDeltaV Wenn eine Maus eine Seite hat mit dem Mausrad angezeigt wird, mouseScrollDeltaH Diese Werte werden zurückgesetzt auf 0 intern nach einem Anruf bei Paddleboat_getMouseData.

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 Mausgeräte

Ein Paddleboat_MouseStatus von PADDLEBOAT_MOUSE_CONTROLLER_EMULATED bedeutet, dass keine physische Maus vorhanden ist und die Game Controller-Bibliothek Simulation einer virtuellen Maus mit einem verbundenen Controller Niedrigste verbundene Controller-Index mit gesetztem Flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE ist die als virtuelle Maus verwendet wird. Virtuelle Mausgeräte werden nur Koordinaten mouseX und mouseY. Virtuelle Mausgeräte melden möglicherweise das Drücken von mit einer einzigen (linken) Maustaste, dies ist jedoch nicht garantiert.