Use as seguintes funções para adicionar compatibilidade com mouse para o jogo usando a biblioteca Game Controller. Usamos o termo mouse aqui para descrever o mouse tradicional, bem como trackpads ou trackballs.
Adicionar um callback de status do mouse
A biblioteca Game Controller usa um callback de status do mouse para notificar um jogo quando um mouse é conectado ou desconectado. Ela aceita apenas um callback de status do mouse por vez.
- Para registrar um callback de status do mouse ou substituir qualquer outro registrado anteriormente
por uma nova função de callback, chame a função
Paddleboat_setMouseStatusCallback
. - Para remover qualquer callback registrado no momento, transmita
NULL
ounullptr
no parâmetrostatusCallback
. - O parâmetro
userData
é um ponteiro opcional para dados definidos pelo usuário. A O parâmetrouserData
será transmitido para a função de callback. Esse ponteiro é retido internamente até ser modificado por outra chamada paraPaddleboat_setMouseStatusCallback
.
void Paddleboat_setMouseStatusCallback(Paddleboat_MouseStatusCallback
statusCallback, void *userData)
A assinatura da função de callback de status do mouse é:
typedef void (*Paddleboat_MouseStatusCallback)(const Paddleboat_MouseStatus
mouseStatus, void *userData)
O parâmetro de enumeração mouseStatus
tem três valores possíveis:
PADDLEBOAT_MOUSE_NONE
: nenhum mouse está conectado.PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
: um controlador conectado está simulando um mouse.PADDLEBOAT_MOUSE_PHYSICAL
: um ou mais dispositivos físicos de mouse estão conectados. Esses dispositivos incluem mouse, touchpad, trackball ou outros dispositivos semelhantes.
O parâmetro userData
contém o ponteiro userData
especificado na
para Paddleboat_setMouseStatusCallback
. userData
pode ser NULL ou
nullptr
.
Nem todos os controles simulam um mouse. Os controles podem simular um mouse usando um dos direcionais analógicos ou com um touchpad integrado.
A biblioteca Game Controller só informa dados de um único mouse. Mouses físicos têm prioridade sobre os dispositivos de mouse do controle virtual. Se um mouse físico estiver conectado, ele substituirá qualquer mouse do controle virtual anteriormente ativo.
Ler dados do mouse
Chame a função Paddleboat_getMouseStatus
para ver o status do mouse.
Paddleboat_MouseStatus Paddleboat_getMouseStatus()
Use a função Paddleboat_getMouseData
para acessar os dados atuais do mouse. Essa função retorna
PADDLEBOAT_NO_ERROR
se os dados forem lidos. Caso contrário, um
o código de erro apropriado será retornado.
bool Paddleboat_getMouseData(Paddleboat_Mouse_Data *mouseData)
A estrutura Paddleboat_Mouse_Data
contém informações sobre:
- o carimbo de data/hora do evento mais recente de entrada do mouse;
- a posição atual do ponteiro;
- status dos botões do mouse;
- status das rodas do mouse.
struct Paddleboat_Mouse_Data {
uint64_t timestamp;
uint32_t buttonsDown;
int32_t mouseScrollDeltaH;
int32_t mouseScrollDeltaV;
float mouseX;
float mouseY;
}
Membro da estrutura | Descrição |
---|---|
timestamp
|
Carimbo de data/hora do evento mais recente de entrada do mouse. O valor do carimbo de data/hora é exibido em microssegundos desde a época do relógio. |
buttonsDown
|
Bitfield, cada bit a partir do bit 0 significa um estado de botão desligado, se definido. |
mouseX mouseY
|
Posição do mouse em coordenadas de pixel.
As coordenadas de posição têm um intervalo de 0.0
em relação à largura e altura da tela. |
mouseScrollDeltaH mouseScrollDeltaV
|
Uma contagem de eventos cumulativos da roda do mouse: desde a chamada anterior para
Paddleboat_getMouseData . Não é garantido que esses
valores sejam precisos; eles servem apenas para fornecer uma
indicação da atividade da roda de rolagem em uma
direção específica. A maioria dos mouses tem uma
roda de rolagem, o que é informado em
mouseScrollDeltaV . Se um mouse tiver uma roda de
rolagem lateral, isso será informado em
mouseScrollDeltaH . Esses valores são redefinidos para
0 internamente após uma chamada para
Paddleboat_getMouseData . |
A biblioteca Game Controller define constantes de bitmask para botões do mouse no
arquivo principal da interface 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)
};
Mouses físicos e virtuais
Um Paddleboat_MouseStatus
de PADDLEBOAT_MOUSE_CONTROLLER_EMULATED
indica
que não há um dispositivo físico de mouse e que a biblioteca Game Controller
simula um mouse virtual usando um controle conectado. O menor índice do controle
conectado com a sinalização PADDLEBOAT_CONTROLLER_FLAG_VIRTUAL_MOUSE
definida é
usado como o mouse virtual. Só é garantido que os mouses virtuais relatem
coordenadas mouseX
e mouseY
. Mouses virtuais podem relatar pressionamentos de
um único botão (esquerdo) do mouse, mas isso não é garantido.