Leituras do GameInput
Leituras do GameInput
Os pacotes de entrada brutos recebidos de cada dispositivo são encapsulados em objetos de “leitura”. As leituras contêm os dados originais do pacote bruto e (geralmente) uma ou mais transformações dos dados brutos em formatos de nível mais alto. Além de sua função como contêineres de dados, as leituras também servem como identificadores que fazem referência a uma posição específica dentro do fluxo de entrada.
Chamar GetCurrentReading recupera a leitura mais recente do fluxo de entrada. Um filtro GameInputKind opcional pode ser passado para limitar as leituras retornadas a tipos específicos de entrada, como gamepad ou teclado. Um filtro IGameInputDevice opcional também pode ser passado para limitar as leituras retornadas apenas àquelas geradas pelo dispositivo especificado. Esses filtros podem ser aplicados individualmente ou em conjunto.
As instâncias de IGameInputReading são singletons com contagem de referências. Recuperar uma leitura é uma operação extremamente rápida e leve: nenhuma alocação ou cópia de memória é realizada, e a chamada de API é livre de bloqueio, sem transições para o modo kernel. Como as leituras são singletons, um aplicativo pode comparar os ponteiros de leitura quanto à igualdade para saber se duas chamadas a GetCurrentReading retornaram a mesma leitura (o que significa que nenhuma nova entrada foi gerada).
Jogos com necessidades de entrada menos complexas podem simplesmente sondar novas entradas uma vez por quadro e comparar o estado armazenado nas duas leituras em busca de diferenças (se não forem a mesma leitura). Jogos com necessidades de entrada mais complexas, no entanto, podem precisar percorrer o fluxo de entrada para obter uma visão completa de todas as alterações de estado de entrada que ocorreram desde o quadro anterior. Isso é possível com os métodos GetNextReading e GetPreviousReading, que permitem os mesmos filtros que GetCurrentReading. O fluxo de entrada mantém o último meio segundo de leituras históricas em seu buffer.
Como alternativa, os aplicativos podem registrar um retorno de chamada que é invocado sempre que uma entrada é gerada. Assim como nos métodos síncronos anteriores, vários filtros podem ser aplicados para controlar quais tipos de leitura são retornados e de quais dispositivos. Para obter mais informações, confira Retornos de chamada do GameInput na seção Tópicos avançados do GameInput.
Os tipos de dados disponíveis em uma leitura dependem do dispositivo de entrada e de suas propriedades físicas. Por exemplo, uma leitura de um teclado padrão pode conter apenas dados de teclado, enquanto uma leitura de um teclado com trackball integrado pode conter dados de teclado e de mouse.
Quase todos os controles de jogo produzem leituras que contêm dados genéricos de “controle”, que são simplesmente uma coleção de estados anônimos de eixos e botões. Isso permite um amplo suporte a dispositivos para aplicativos com uma interface de mapeamento de entrada. No entanto, muitos controles de jogo (como gamepads) também expõem em suas leituras um estado familiar de formato fixo, que é muito mais fácil de consumir para jogos típicos.
A interface IGameInputReading contém métodos para recuperar o estado em qualquer um dos formatos aos quais a leitura dá suporte. Todas as diferentes representações disponíveis nas leituras são pré-calculadas, portanto, esses métodos simplesmente copiam alguns bytes de dados e retornam.
Last modified on October 6, 2026
