Utilizza le seguenti funzioni per aggiungere il supporto per i mouse al tuo gioco utilizzando la libreria del controller di gioco. In questo caso utilizziamo il termine mouse per descrivere i mouse tradizionali, nonché i trackpad e le trackball.
Aggiungi un callback dello stato del mouse
La raccolta del controller di gioco utilizza un callback dello stato del mouse per inviare una notifica a un gioco quando un mouse è collegato o disconnesso. Supporta un solo callback dello stato del mouse alla volta.
- Per registrare un callback dello stato del mouse o sostituire qualsiasi callback registrato in precedenza con una nuova funzione di callback, chiama la funzione
Paddleboat_setMouseStatusCallback
. - Per rimuovere qualsiasi callback attualmente registrato, trasmetti
NULL
onullptr
nel parametrostatusCallback
. - Il parametro
userData
è un puntatore facoltativo ai dati definiti dall'utente. Il parametrouserData
verrà passato alla funzione di callback. Questo puntatore viene conservato internamente fino a quando 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)
Per il parametro enum mouseStatus
sono possibili tre valori:
PADDLEBOAT_MOUSE_NONE
: nessun mouse collegato al momento.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: un controller collegato sta simulando un mouse.PADDLEBOAT_MOUSE_PHYSICAL
: uno o più mouse fisici sono connessi. ad esempio mouse, touchpad, trackball o altri dispositivi simili.
Il parametro userData
contiene il puntatore userData
specificato nell'ultima chiamata a Paddleboat_setMouseStatusCallback
. userData
può essere NULL o
nullptr
.
Non tutti i controller simulano un mouse. I controller possono simulare un mouse usando una delle levette analogiche o un touchpad integrato.
La libreria del controller di gioco riporta solo i dati di un singolo dispositivo mouse. I dispositivi mouse fisici hanno la priorità sui dispositivi mouse controller virtuali. Se è collegato un mouse fisico, prende il posto di qualsiasi mouse controller virtuale attivo in precedenza.
Leggi i dati del mouse
Richiama la funzione Paddleboat_getMouseStatus
per ottenere lo stato del mouse.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Utilizza la funzione Paddleboat_getMouseData
per ottenere i dati correnti del mouse. Questa funzione restituisce PADDLEBOAT_NO_ERROR
se i dati vengono letti correttamente, altrimenti viene restituito un 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 attuale 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 dall'epoca dell'orologio. |
buttonsDown
|
Bitfield, ogni bit a partire dal bit 0 indica uno stato di pulsante down, 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 della rotellina di scorrimento del mouse, a partire dalla chiamata precedente a Paddleboat_getMouseData . La precisione di questi valori non è garantita, ma solo per fornire un'indicazione dell'attività della rotellina di scorrimento in una determinata direzione. La maggior parte dei mouse ha una rotellina di scorrimento, riportata in mouseScrollDeltaV . Se un mouse è dotato della rotellina di scorrimento laterale, è indicato in mouseScrollDeltaH . Questi valori vengono reimpostati internamente su 0 dopo una chiamata a Paddleboat_getMouseData . |
La libreria del controller di gioco definisce le costanti di bitmask per i pulsanti del mouse nel 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)
};
Dispositivi mouse fisici e virtuali
Un Paddleboat_MouseStatus
pari a PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
indica
che non è presente un mouse fisico e che la libreria del controller di gioco sta simulando un mouse virtuale mediante un controller collegato. L'indice del controller connesso più basso con il flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
impostato viene utilizzato come mouse virtuale. Ai dispositivi mouse virtuali viene garantita solo la segnalazione delle coordinate mouseX
e mouseY
. I mouse virtuali potrebbero segnalare la pressione di un singolo pulsante del mouse (sinistra), ma ciò non è garantito.