Emplea las siguientes funciones para agregar compatibilidad con el mouse con la biblioteca de Game Controller. Usaremos el término mouse para describir cualquier mouse tradicional, así como paneles táctiles y bolas de seguimiento.
Cómo agregar una devolución de llamada del estado del mouse
La biblioteca de controles para juegos usa una devolución de llamada de estado del mouse a fin de enviar una notificación a un juego cuando se conecta o desconecta un mouse. Solo admite una devolución de llamada de estado del mouse a la vez.
- Si deseas registrar una devolución de llamada de estado del mouse o reemplazar cualquier devolución de llamada registrada con anterioridad por una nueva función de devolución de llamada, llama a la función
Paddleboat_setMouseStatusCallback
. - Para quitar una devolución de llamada registrada, pasa
NULL
onullptr
en el parámetrostatusCallback
. - El parámetro
userData
es un puntero opcional para datos definidos por el usuario. El parámetrouserData
se pasará a la función de devolución de llamada. Este puntero se retiene internamente hasta que se modifica mediante otra llamada aPaddleboat_setMouseStatusCallback
.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
La firma de la función de devolución de llamada del estado del mouse es la siguiente:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
El parámetro de enumeración mouseStatus
tiene tres valores posibles:
PADDLEBOAT_MOUSE_NONE
: No hay ningún mouse conectado actualmente.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: Hay un control conectado que simula un mouse.PADDLEBOAT_MOUSE_PHYSICAL
: Hay al menos un mouse físico conectado (puede ser un mouse, un panel táctil, una bola de seguimiento o algún otro dispositivo similar).
El parámetro userData
contiene el puntero userData
especificado en la última llamada a Paddleboat_setMouseStatusCallback
. userData
puede tener un valor NULO o nullptr
.
No todos los controles simulan un mouse. Los controles pueden simular un mouse mediante uno de los sticks analógicos o un panel táctil integrado.
La biblioteca de controles para juegos solo informa datos desde un mouse único. Un mouse físico tiene prioridad sobre uno de control virtual. Cuando se conecte un mouse físico, este reemplazará a cualquier mouse de control virtual que haya estado activo.
Cómo leer los datos del mouse
Llama a la función Paddleboat_getMouseStatus
a fin de obtener el estado del mouse.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Usa la función Paddleboat_getMouseData
para obtener los datos actuales del mouse. Esta función muestra PADDLEBOAT_NO_ERROR
si los datos se leen correctamente; de lo contrario, se muestra un código de error adecuado.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
La estructura Paddleboat_Mouse_Data
contiene información sobre lo siguiente:
- La marca de tiempo más reciente del evento de entrada del mouse
- La posición actual del puntero
- El estado de los botones del mouse
- El estado de las ruedas del mouse
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
Miembro de la estructura | Descripción |
---|---|
timestamp
|
Marca de tiempo del evento de entrada más reciente del mouse. El valor de la marca de tiempo está en microsegundos desde la época. |
buttonsDown
|
El campo de bits (cada bit, comenzando por el bit 0) significa un estado de botón desactivado si se configura. |
mouseX mouseY
|
Posición del mouse en coordenadas de píxeles.
Las coordenadas de posición tienen un rango de 0.0 respecto del ancho y el alto de la pantalla. |
mouseScrollDeltaH mouseScrollDeltaV
|
Cantidad de eventos de rueda del mouse acumulados desde la llamada anterior a Paddleboat_getMouseData . No se garantiza que estos valores sean precisos, sino que solo proporcionan una indicación de la actividad de la rueda del mouse en una dirección en particular. En la mayoría de los casos, un mouse tiene una rueda, lo cual se informa en mouseScrollDeltaV . Si un mouse tiene una rueda lateral, esto se informa en mouseScrollDeltaH . Estos valores se restablecen de forma interna a 0 después de una llamada a Paddleboat_getMouseData . |
La biblioteca de controles para juegos define constantes de máscara de bits para los botones del mouse en el archivo de encabezado de interfaz 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)
};
Diferencias entre un mouse físico y uno virtual
Un Paddleboat_MouseStatus
de PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
indica que no existe un mouse como dispositivo físico y que la biblioteca de controles para juegos está simulando un mouse virtual por medio de un control conectado. El índice más bajo de controles conectados con el conjunto de marcas PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
se usa como el mouse virtual. Solo se garantiza que los dispositivos de mouse virtuales informen las coordenadas mouseX
y mouseY
. Un mouse virtual puede informar la cantidad de presiones sobre un único botón (el de la izquierda) del mouse, pero esto no se garantiza.