Aggiungi il supporto del mouse

Usa le funzioni che seguono per aggiungere il supporto per i mouse al tuo gioco usando le nella raccolta di controller di gioco. In questo caso, utilizziamo il termine "Mouse" per descrivere con mouse tradizionali, così come trackpad o trackball.

Aggiungi un callback dello stato del mouse

La raccolta di controller di gioco utilizza un callback dello stato del mouse per informare un gioco quando un il mouse è connesso o disconnesso. Supporta un solo callback dello stato del mouse. alla volta.

  • Per registrare un callback dello stato del mouse o sostituire qualsiasi registrato in precedenza con una nuova funzione di callback, richiama Paddleboat_setMouseStatusCallback.
  • Per rimuovere qualsiasi callback attualmente registrato, passa NULL o nullptr nel statusCallback.
  • Il parametro userData è un puntatore facoltativo ai dati definiti dall'utente. La Il parametro userData verrà passato alla funzione di callback. Questo il puntatore viene conservato internamente finché non viene modificato da un'altra chiamata a Paddleboat_setMouseStatusCallback.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
  statusCallback, void *userData)

La firma della funzione di callback dello stato del mouse è:

typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
  mouseStatus, void *userData)

Sono possibili tre valori per il parametro enum mouseStatus:

  • PADDLEBOAT_MOUSE_NONE: al momento nessun mouse è connesso.
  • PADDLEBOAT_MOUSE_CONTROLLER_EMULATED: sta simulando un controller collegato un mouse.
  • PADDLEBOAT_MOUSE_PHYSICAL: uno o più mouse fisici sono connesso. Questi dispositivi includono mouse, touchpad, trackball o altri dispositivi simili).

Il parametro userData contiene il puntatore userData specificato nell'ultimo chiamata a Paddleboat_setMouseStatusCallback. userData può essere NULL o nullptr.

Non tutti i controller simulano un mouse. I controller possono simulare un mouse usando uno delle levette analogiche o con un touchpad integrato.

La libreria dei controller di gioco riporta solo i dati di un singolo mouse. I mouse fisici hanno la priorità sui mouse con controller virtuali. Se mouse fisico è connesso, prende il posto di qualsiasi il mouse del controller.

Lettura dei dati del mouse

Chiama la funzione Paddleboat_getMouseStatus per ottenere lo stato del mouse.

Paddleboat_MouseStatus Paddleboat_getMouseStatus()

Utilizza la Paddleboat_getMouseData per ottenere i dati attuali del mouse. Questa funzione restituisce PADDLEBOAT_NO_ERROR se i dati vengono letti correttamente, altrimenti viene venga restituito il codice di errore appropriato.

bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)

La struttura Paddleboat_Mouse_Data contiene informazioni su:

  • Timestamp più recente dell'evento di input del mouse
  • La posizione corrente del puntatore
  • Stato dei pulsanti del mouse
  • Stato delle rotelline del mouse
struct Paddleboat_Mouse_Data {
    uint64_t timestamp;
    uint32_t buttonsDown;
    int32_t mouseScrollDeltaH;
    int32_t mouseScrollDeltaV;
    float mouseX;
    float mouseY;
}
Membro della struttura Descrizione
timestamp Timestamp dell'evento di input del mouse più recente. Il valore del timestamp è espresso in microsecondi da allora. dell'orologio.
buttonsDown Bitfield, ogni bit a partire dal bit 0 indica uno stato di pulsante, se impostato.
mouseX
mouseY
Posizione del mouse nelle coordinate in pixel. Le coordinate di posizione hanno un intervallo compreso tra 0.0 e la larghezza e l'altezza dello schermo.
mouseScrollDeltaH
mouseScrollDeltaV
Un conteggio di eventi cumulativi alla rotellina di scorrimento del mouse : rispetto alla precedente chiamata Paddleboat_getMouseData. Questi valori non sono la precisione, solo per dare un'idea indicazione dell'attività della rotellina di scorrimento in in una particolare direzione. La maggior parte dei topi ne ha uno la rotellina di scorrimento, riportata nella mouseScrollDeltaV. Se un mouse ha un lato la rotellina di scorrimento, è riportata nella mouseScrollDeltaH. Questi valori vengono reimpostati su 0 internamente dopo una chiamata a Paddleboat_getMouseData.

La libreria del controller di gioco definisce le costanti di bitmask per i pulsanti del mouse File di intestazione dell'interfaccia 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)
};

Mouse fisici e dispositivi mouse virtuali

Un valore Paddleboat_MouseStatus di PADDLEBOAT_MOUSE_CONTROLLER_EMULATED indica che non è presente un mouse fisico e che la libreria del controller di gioco simulando un mouse virtuale usando un controller connesso. Il più basso l'indice del controller con il flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE impostato è utilizzato come mouse virtuale. I mouse virtuali generano report solo Coordinate di mouseX e mouseY. I mouse virtuali potrebbero segnalare le pressioni dei un singolo pulsante (sinistra), ma non è garantito.