GameInput.
Entrada de teclado
O método GetKeyState recupera o código de verificação e os dados de tecla virtual de cada tecla pressionada em um teclado. Esses dados de entrada são então retornados como uma matriz de comprimento variável de structs GameInputKeyState. Uma tecla pressionada é aquela que está sendo mantida pressionada no momento em que o teclado relatou uma entrada. Os teclados variam na frequência com que relatam entradas, normalmente de 125 Hz a 1.000 Hz. O estado do teclado é relatado separadamente para cada teclado individual conectado ao sistema. O estado rudimentar do teclado destina-se a mapear a entrada do teclado para ações do jogo, como movimentação ou disparo de uma arma. Ele não se destina à entrada regular de texto, e outras APIs são usadas para essa finalidade.Lendo o estado das teclas
Use o código a seguir para implementar oGameInput para teclados e mouses no seu título.
stateArray passada para GetKeyState for maior que o número de teclas pressionadas, os elementos excedentes da matriz não serão gravados nem zerados. Por outro lado, se stateArray for menor que o número de teclas pressionadas, a matriz será preenchida e as teclas pressionadas excedentes serão perdidas.
GetKeyCount mantém pequeno o tamanho máximo da matriz. O tamanho máximo pode ser consultado por meio da interface IGameInputDevice.
Observe que o membro codePoint especifica o glifo que o sistema acredita estar impresso na tecla associada, com base no layout de teclado atual. Ele se destina a exibir uma representação da tecla em uma interface de mapeamento de entrada, não a construir cadeias de caracteres de entrada de texto.
Entrada de mouse
O método GetMouseState recupera o movimento e o estado dos botões de um mouse, que são retornados em um único struct GameInputMouseState, conforme mostrado no código a seguir. Assim como o estado do teclado, o estado do mouse é relatado separadamente para cada mouse individual conectado ao sistema. <!—As with keyboard input, the CreateAggregateDevice method on theIGameInput interface is used to get the combined system mouse state.> —>
Lendo os movimentos do mouse
O movimento do mouse é relatado nativamente como uma série de valores delta, em vez de uma posição absoluta. Isso não é compatível com a natureza de sondagem deGetCurrentReading, pois solicitar periodicamente a leitura atual do mouse provavelmente perderá vários deltas intermediários.
Em vez de usar GetNextReading para percorrer potencialmente dezenas de leituras históricas do mouse e somar os deltas, eles são acumulados em valores virtuais positionX e positionY. A partir daí, os deltas são calculados subtraindo os valores positionX e positionY das leituras anteriores obtidas. Os deltas individuais são acessíveis ao iterar por todas as leituras intermediárias, ou por meio dos deltas acumulados quando leituras intermediárias foram ignoradas.
Os valores positionX e positionY são a soma de todos os deltas de movimento. Esses valores não se correlacionam de forma alguma com coordenadas do espaço da tela. O valor delta acumulado refere-se apenas aos eventos do mouse que um processo recebe enquanto tem o foco de entrada.
