Este projeto está arquivado. Não é mais mantido nem desenvolvido.
Gainput
Gainput é a incrível biblioteca de entrada C ++ para o seu jogo:
- Lida com suas necessidades de entrada, desde leitura de dispositivo de baixo nível até mapeamento de alto nível de botões definidos pelo usuário
- bem documentado, limpo, leve e fácil de usar
- Uma interface unificada em todas as plataformas suportadas: Android NDK, iOS/TVOS, Linux, MacOS, Windows
- Dispositivos suportados: teclado, mouse, gamepad, sensores internos de vários toques, dispositivos embutidos
- Código aberto (licença do MIT)
- Lista completa de recursos
- Documentação da API
Uso
# include < gainput/gainput.h >
enum Button
{
ButtonConfirm
};
gainput::InputManager manager;
manager.SetDisplaySize(displayWidth, displayHeight);
const gainput::DeviceId keyboardId = manager.CreateDevice<gainput::InputDeviceKeyboard>();
const gainput::DeviceId mouseId = manager.CreateDevice<gainput::InputDeviceMouse>();
const gainput::DeviceId padId = manager.CreateDevice<gainput::InputDevicePad>();
const gainput::DeviceId touchId = manager.CreateDevice<gainput::InputDeviceTouch>();
gainput::InputMap map (manager);
map.MapBool(ButtonConfirm, keyboardId, gainput::KeyReturn);
map.MapBool(ButtonConfirm, mouseId, gainput::MouseButtonLeft);
map.MapBool(ButtonConfirm, padId, gainput::PadButtonA);
map.MapBool(ButtonConfirm, touchId, gainput::Touch0Down);
while (running)
{
manager. Update ();
// May need some platform-specific message handling here
if (map. GetBoolWasDown (ButtonConfirm))
{
// Confirmed!
}
}Características
- Oferece uma interface unificada em todas as plataformas suportadas. (Algumas pequenas mudanças são necessárias para configurar a biblioteca.)
- Fornece uma interface de baixo e alto nível: consulte o estado dos botões Dispositivos de entrada diretamente ou os botões do dispositivo de mapa para um botão de usuário. Dessa forma, é fácil suportar entradas alternativas ou alterar os mapeamentos de entrada mais tarde.
- Suporta gravação e reprodução de sequências de entrada.
- Possui um servidor de rede para obter informações sobre dispositivos e mapeamentos.
- Duas instâncias de ganho podem sincronizar os estados do dispositivo pela rede . Também é possível receber entradas com vários toques do navegador regular de um smartphone .
- Completamente escrito em C ++ portátil.
- Nenhum STL é usado. Nenhuma exceção é jogada. Nenhum RTTI é usado. Sem C ++ 11 , e sem impulso .
- Não são usadas dependências externas estranhas . Conta com os SDKs da plataforma existente.
- Configurar e construir facilmente usando sua ferramenta de IDE/construção favorita.
- Os ouvintes podem ser instalados para os botões de dispositivos e botões do usuário. Dessa forma, você é notificado quando um estado de botão muda.
- Os gestos permitem que padrões de entrada mais complexos sejam detectados, por exemplo, clicando duas vezes, gestos de beliscão/rotação ou segurando vários botões simultaneamente.
- Um alocador externo pode ser fornecido à biblioteca para que todo o gerenciamento de memória seja feito da maneira que você deseja.
- Suporta entrada bruta no Linux e Windows.
- Gamepad Rumbling é suportado quando disponível.
- É fácil verificar todos os botões pressionados, para que oferecer uma maneira de os jogadores remapeie seus botões, seja fácil de implementar. Da mesma forma, é fácil salvar e carregar mapeamentos.
- Recursos possivelmente desnecessários, como gestos ou servidor de rede, são facilmente desativados.
- As zonas mortas podem ser configuradas para qualquer botão de valor flutuante.
- Alterações de estado , ou seja, se um botão estiver recém -desativado ou apenas liberado, poderá ser verificado.
Prédio
Por padrão, o Gainput é construído usando o CMake.
- Execute
mkdir build - Execute
cmake .. - Correr
make - A biblioteca pode ser encontrada na
lib/ , os executáveis em samples/ .
Contribuindo
Todos podem contribuir para a biblioteca. Se você encontrar algum problema, poderá enviá -los usando o sistema de problemas do Github. Se você deseja contribuir com o código, bifurque o projeto e envie uma solicitação de tração.
Dependências
O Gainput possui um número mínimo de dependências externas para torná-lo o mais independente possível. Ele usa as maneiras padrão das plataformas de obter entradas e não usa o STL.
Teste
Geralmente, os testes devem ser feitos através da criação e corrida de ganho em todas as plataformas suportadas. As amostras nas samples/ pasta devem ser usadas para determinar se a biblioteca é funcional.
Os testes de unidade no test/ pasta são construídos pela construção cmake normal. O executável pode ser encontrado no test/ pasta. Todas as configurações de construção e testes de unidade são construídas e executadas pelo Travis CI sempre que algo é empurrado para o repositório.
Alternativas