Utilizza le seguenti funzioni per aggiungere il supporto del mouse al tuo gioco utilizzando la libreria Game Controller. Qui utilizziamo il termine dispositivi di tipo mouse per descrivere mouse tradizionali, trackpad o trackball.
Aggiungere un callback dello stato del mouse
La libreria Game Controller utilizza un callback di stato del mouse per notificare a un gioco quando un mouse è connesso o disconnesso. Supporta una sola callback di 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 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)
Il parametro enum mouseStatus
ha tre valori possibili:
PADDLEBOAT_MOUSE_NONE
: al momento non è connesso alcun mouse.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Un controller connesso sta simulando un mouse.PADDLEBOAT_MOUSE_PHYSICAL
: Uno o più mouse fisici sono collegati. Questi dispositivi includono 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 utilizzando una delle levette analogiche o un touchpad integrato.
La libreria Game Controller segnala 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, questo sostituisce qualsiasi mouse virtuale del controller attivo in precedenza.
Lettura dei dati del mouse
Chiama la funzione Paddleboat_getMouseStatus
per ottenere lo stato del dispositivo mouse.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Utilizza la funzione Paddleboat_getMouseData
per ottenere i dati attuali 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:
- Il timestamp dell'evento di input del mouse più recente
- La posizione attuale del puntatore
- Stato dei tasti 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 a partire dall'epoca dell'orologio. |
buttonsDown
|
Bitfield, ogni bit a partire dal bit 0 indica lo stato di pressione di un pulsante se impostato. |
mouseX mouseY
|
Posizione del mouse in coordinate pixel.
Le coordinate di posizione hanno un intervallo compreso tra 0.0 e
la larghezza e l'altezza dello schermo. |
mouseScrollDeltaH mouseScrollDeltaV
|
Un conteggio degli eventi cumulativi della rotellina del mouse:
dall'ultima chiamata a
Paddleboat_getMouseData . Non è garantita la precisione di questi valori, che forniscono solo un'indicazione dell'attività della rotellina di scorrimento in una determinata direzione. La maggior parte dei mouse ha una rotellina
di scorrimento, che viene segnalata in
mouseScrollDeltaV . Se un mouse ha una rotellina
di scorrimento laterale, viene segnalata in
mouseScrollDeltaH . Questi valori vengono reimpostati internamente su
0 dopo una chiamata a
Paddleboat_getMouseData . |
La libreria Game Controller definisce le costanti 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
di PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
indica
che un dispositivo mouse fisico è assente e la libreria Game Controller
sta simulando un mouse virtuale utilizzando un controller connesso. L'indice del controller
connesso più basso con il flag PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
impostato
viene utilizzato come mouse virtuale. I dispositivi mouse virtuali garantiscono solo la segnalazione
delle coordinate mouseX
e mouseY
. I dispositivi mouse virtuali potrebbero segnalare le pressioni di un singolo tasto del mouse (sinistro), ma non è garantito.