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
onullptr
nelstatusCallback
. - Il parametro
userData
è un puntatore facoltativo ai dati definiti dall'utente. La Il parametrouserData
verrà passato alla funzione di callback. Questo il puntatore viene conservato internamente finché non viene modificato da un'altra chiamata aPaddleboat_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.