Classe que organiza entradas do usuário.  
 Mais...
#include <InputManager.h>
Classe que organiza entradas do usuário. 
O InputManager organiza internamente as várias formas om as quais o usuário pode interafir com o programa. Sendo elas:
- Botões do teclado
- Posição do mouse
- Cliques do mouse
- Scroll do mouse Observação: Os métodos que trabalham com o teclado precisam ter seus índices ajustados conforme o documentado em keyState. Para tal a função macro AJUST_KEY foi feita. 
  
  | 
        
          | InputManager::InputManager | ( |  | ) |  |  | private | 
 
Inicializa os atributos. 
Todos os atributos internos não iniciados com zero ou falso, dependendo do tipo. 
 
 
  
  | 
        
          | InputManager::~InputManager | ( |  | ) |  |  | private | 
 
Destrutor. 
Como todos os atributos dessa classe são alocados estaticamente, nada precisa ser feito. 
 
 
      
        
          | bool InputManager::ButtonPress | ( | int | button | ) | const | 
      
 
Informa se um botão do controle foi pressionado no frame corrente. 
- Parâmetros
- 
  
    | button | Botão do controle cujo o estado é requerido |  
 
- Retorna
- Booleano que informa se o botão foi pressionado ou não no frame corrente.
Retorna verdadeiro se o controllerState do botão for falso E o mouseUpdate do botão for igual ao updateCounter. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::ButtonRelease | ( | int | button | ) | const | 
      
 
Informa se um botão do controle foi solto no frame corrente. 
- Parâmetros
- 
  
    | button | Botão do controle cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão foi solto ou não no frame corrente.
Retorna verdadeiro se o controllerState do botao for falso E o controllerUpdate do botão for igual ao updateCounter. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | Vec2 InputManager::GetControllerLeftStickState | ( |  | ) | const | 
      
 
Calcula o deslocamento do sticker esquerdo de um controle. 
- Retorna
- Vetor bidimensional que informa a posição (x,y) do analógico esquerdo. 
 
 
      
        
          | Vec2 InputManager::GetControllerRightStickState | ( |  | ) | const | 
      
 
Calcula o deslocamento do sticker direito de um controle. 
- Retorna
- Vetor bidimensional que informa a posição (x,y) do analógico direito. 
 
 
Obtém referência para a instância estática do Inputmanager. 
- Retorna
- Referência para a instância estática do InputManager
O InputManager é um singleton, esse método retorna a instância estática do mesmo. Dentro do corpo desse método está a declaração dessa instância que é estática(no sentido de programação em C). Essa instância estática é retornada. 
 
 
      
        
          | Vec2 InputManager::GetMousePos | ( | void |  | ) | const | 
      
 
Informa em um Vec2 a posição (x, y) do mouse. 
- Retorna
- Valor (x, y) do mouse
O eixo horizontal cresce para a direira e o eixo vertical cresce para baixo. O eixo horizontal decresce para a esquerda e o eixo vertical decresce para cima. 
 
 
      
        
          | int InputManager::GetMouseX | ( | void |  | ) | const | 
      
 
Informa o valor do eixo X do mouse. 
- Retorna
- valor X do mouse na janela
Esse valor é zero na borda esquerda da janela, cresce para a direita, decresce para a esquerda. 
 
 
      
        
          | int InputManager::GetMouseY | ( | void |  | ) | const | 
      
 
Informa o valor do eixo Y do mouse. 
- Retorna
- valor Y do mouse na janela
Esse valor é zero na borda superior da janela, cresce para a baixo, decresce para a cima. 
 
 
      
        
          | bool InputManager::IsButtonDown | ( | int | button | ) | const | 
      
 
Informa se um botão do controle está pressionada no momento. 
- Parâmetros
- 
  
    | button | Botão do mouse cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão está pressionado ou não.
Retorna verdadeiro se o controllerState do botão for verdadeiro. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::IsButtonUp | ( | int | button | ) | const | 
      
 
Informa se um botão do controle está NÃO pressionada no momento. 
- Parâmetros
- 
  
    | button | Botão do mouse cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão está pressionado ou não.
Retorna verdadeiro se o controllerState do botão for falso. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::IsControllerSticking | ( | void |  | ) | const | 
      
 
Informa se algum sticker do controle está sendo deslocado nesse frame. 
- Retorna
- Booleano que informa se algum sticker está em uso ou não.
Retorna verdadeiro se o mouseScroolUpdate for igual a updateCounter. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::IsKeyDown | ( | int | key | ) | const | 
      
 
Informa se uma tecla do teclado está pressionada no momento. 
- Parâmetros
- 
  
    | key | Tecla do teclado cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se a tecla está pressionada ou não.
Primeiramente, converte-se o argumento a um válido no vetor através da função macro AJUST_KEY. Retorna verdadeiro se o keyState da tecla for verdadeiro e isso ocorrer nesse frame. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::IsKeyUp | ( | int | key | ) | const | 
      
 
Informa se uma tecla do teclado NÃO está pressionada no momento. 
- Parâmetros
- 
  
    | key | Tecla do teclado cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se a tecla está pressionada ou não.
Primeiramente, converte-se o argumento a um válido no vetor através da função macro AJUST_KEY. Retorna verdadeiro se o keyState da tecla for falso. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::IsMouseDown | ( | int | button | ) | const | 
      
 
Informa se um botão do mouse está pressionada no momento. 
- Parâmetros
- 
  
    | key | Botão do mouse cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão está pressionado ou não.
Retorna verdadeiro se o mouseState do botão for verdadeiro. Caso contrário retorna-se o valor falso. Recomenda-se o uso das macros LEFT_MOUSE_BUTTON, RIGHT_MOUSE_BUTTON e MIDDLE_MOUSE_BUTTON. 
 
 
      
        
          | bool InputManager::IsMouseScrolling | ( | void |  | ) | const | 
      
 
Informa se o scroll dp do mouse foi acionado no frame atual. 
- Retorna
- Booleano que informa se o scroll está em uso ou não.
Retorna verdadeiro se o mouseScroolUpdate for igual a updateCounter. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::IsMouseUp | ( | int | button | ) | const | 
      
 
Informa se um botão do mouse NÃO está pressionada no momento. 
- Parâmetros
- 
  
    | key | Botão do mouse cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão está pressionado ou não.
Retorna verdadeiro se o mouseState do botão for falso. Caso contrário retorna-se o valor falso. Recomenda-se o uso das macros LEFT_MOUSE_BUTTON, RIGHT_MOUSE_BUTTON e MIDDLE_MOUSE_BUTTON. 
 
 
      
        
          | bool InputManager::KeyPress | ( | int | key | ) | const | 
      
 
Informa se uma tecla do teclado foi pressionada no frame corrente. 
- Parâmetros
- 
  
    | key | Tecla do teclado cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se a tecla foi pressionada ou não no frame corrente.
Primeiramente, converte-se o argumento a um válido no vetor através da função macro AJUST_KEY. Retorna verdadeiro se o keyState da tecla for verdadeiro E o keyUpdate da tecla for igual ao updateCounter. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::KeyRelease | ( | int | key | ) | const | 
      
 
Informa se uma tecla do teclado foi solta no frame corrente. 
- Parâmetros
- 
  
    | key | Tecla do teclado cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se a tecla foi solta ou não no frame corrente.
Primeiramente, converte-se o argumento a um válido no vetor através da função macro AJUST_KEY. Retorna verdadeiro se o keyState da tecla for falso E o keyUpdate da tecla for igual ao updateCounter. Caso contrário retorna-se o valor falso. 
 
 
      
        
          | bool InputManager::MousePress | ( | int | button | ) | const | 
      
 
Informa se um botão do mouse foi pressionado no frame corrente. 
- Parâmetros
- 
  
    | key | Botão do mouse cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão foi pressionado ou não no frame corrente.
Retorna verdadeiro se o keyState da tecla for verdadeiro E o mouseUpdate do botão for igual ao updateCounter. Caso contrário retorna-se o valor falso. Recomenda-se o uso das macros LEFT_MOUSE_BUTTON, RIGHT_MOUSE_BUTTON e MIDDLE_MOUSE_BUTTON. 
 
 
      
        
          | bool InputManager::MouseRelease | ( | int | button | ) | const | 
      
 
Informa se um botão do mouse foi solto no frame corrente. 
- Parâmetros
- 
  
    | key | Botão do mouse cujo o estado é requierido |  
 
- Retorna
- Booleano que informa se o botão foi solta ou não no frame corrente.
Retorna verdadeiro se o keyState da tecla for falso E o mouseUpdate do botão for igual ao updateCounter. Caso contrário retorna-se o valor falso. Recomenda-se o uso das macros LEFT_MOUSE_BUTTON, RIGHT_MOUSE_BUTTON e MIDDLE_MOUSE_BUTTON. 
 
 
      
        
          | Vec2 InputManager::MouseScroll | ( | void |  | ) | const | 
      
 
Informa em um Vec2 o último scrool do mouse feito. 
- Retorna
- Valor (x, y) do scroll do mouse 
- Futuras Atividades:
- Fazer a correção dos sentidos de acordo com a direções. Essa correção só pode ser feita após a versão 2.0.4 da SDL2. Veja https://wiki.libsdl.org/SDL_MouseWheelEvent
O eixo horizontal cresce para a direira e o eixo vertical cresce para baixo. O eixo horizontal decresce para a esquerda e o eixo vertical decresce para cima. 
 
 
      
        
          | bool InputManager::QuitRequested | ( | void |  | ) | const | 
      
 
Informa se o usuário solicitou a saída do programa. 
- Retorna
- Booleano com a informação solicitada.
Retorna verdadeiro se o evento SDL_QUIT ocorreu no frame atual. Caso contrário retorna falso. 
 
 
      
        
          | void InputManager::Update | ( | void |  | ) |  | 
      
 
Atualiza as informações internas. 
- Futuras Atividades:
- Verificar se o keyUpdate e o mouseUpdate devem ser atualizados nos casos de SDL_KEYUP e SDL_MOUSEBUTTONUP, respectivamente.
As seguintes ações são feitas:
- As coordenas do mouse na tela são atualizadas atraveś da chamada à SDL_GetMouseState passando como argumentos o endereço de mouseX e o endereço mouseY.
- quitRequested é setado para falso, pois se ele armazenava o valor verdadeiro ele pedido para fechar já foi tratado no frame anterior.
- o updateCounter é incrementado, o que faz que os inputs de frames anteriores sejam tratados como tal ao se comparar o valor de updateCounter com <input>Update.
- Faz-se um loop de SDL_Event passando por todos os eventos que ocorram no último frame, nesse loop interno faz-se as seguintes computações:
- Se o evento for SDL_KEYDOWN e não for repetido de algum frame anterior; atribui-se verdadeiro para o keyState da tecla correspondente e o keyUpdate de tecla em questão recebe o valor de updateCounter.
- Se o evento for SDL_KEYUP e não for repetido de algum frame anterior; atribui-se false para o keyState da tecla correspondente e o keyUpdate de tecla em questão recebe o valor de updateCounter.
- Se o evento for SDL_MOUSEBUTTONDOWN e não for repetido de algum frame anterior; atribui-se verdadeiro para o mouseState do botão correspondente e o mouseUpdate do botão em questão recebe o valor de updateCounter.
- Se o evento for SDL_MOUSEBUTTONUP e não for repetido de algum frame anterior; atribui-se false para o mouseState do botão correspondente e o mouseUpdate do botão em questão recebe o valor de updateCounter.
- Se o evento for SDL_QUIT o valor verdadeiro é atribuído para quitRequested.
- Se o evento for SDL_MOUSEWHEEL atribui-se o deslocamente feito no scrool à mouseScroolState e o mouseScroolUpdate de tecla em questão recebe o valor de updateCounter. 
 
 
 
  
  | 
        
          | Vec2 InputManager::controllerLeftStickState |  | private | 
 
Armazena a informação de em qual timestamp(updateCounter) o controllerLeftStickState foi alterado. 
 
 
  
  | 
        
          | Vec2 InputManager::controllerRightStickState |  | private | 
 
Armazena a informação de em qual timestamp(updateCounter) o controllerStickState foi alterado. 
 
 
  
  | 
        
          | std::unordered_map<int,bool> InputManager::controllerState |  | private | 
 
Armazena as informações de quais botões do controle estão pressionados. 
 
 
  
  | 
        
          | int InputManager::controllerStickUpdate |  | private | 
 
Armazena a informação do último stick feito no controle. 
 
 
  
  | 
        
          | std::unordered_map<int,int> InputManager::controllerUpdate |  | private | 
 
Armazena as informações de quando os estados dos botões do controle no respectivo keyState foram modificadas. É usado junto com o updateCounter para saber quão recente a informação é. 
 
 
  
  | 
        
          | std::unordered_map<int,bool> InputManager::keyState |  | private | 
 
Armazena as informações de quais botões do teclado estão pressionados. As 127 primeiras posições são relativas às suas correspondentes ASCII. As outras posições rastreiam o estado das teclas não-ASCII, como ctrl, shift, caps lock, F1...F12, etc. 
 
 
  
  | 
        
          | std::unordered_map<int,int> InputManager::keyUpdate |  | private | 
 
Armazena as informações de quando os estados dos botões no respectivo keyState foram modificadas. É usado junto com o updateCounter para saber quão recente a informação é. 
 
 
  
  | 
        
          | Vec2 InputManager::mouseScroolState |  | private | 
 
Armazena a informação do último scroll feito no mouse. 
 
 
  
  | 
        
          | int InputManager::mouseScroolUpdate |  | private | 
 
Armazena a informação de em qual timestamp(updateCounter) o mouseScrollState foi alterado. 
 
 
  
  | 
        
          | bool InputManager::mouseState[6] |  | private | 
 
Armazena a informação dos estados botões do mouse(pressionado ou não pressionado). 
 
 
  
  | 
        
          | int InputManager::mouseUpdate[6] |  | private | 
 
Armazena a informação de quando houve alguma modificação em cada posição do mouseState. 
 
 
Armazena a posição X do mouse na janela. 
 
 
Armazena a posição Y do mouse na janela. 
 
 
  
  | 
        
          | std::unordered_map<int,SDL_GameController*> InputManager::padToController |  | private | 
 
Armazena a relação entre o indice de um controle e o seu referente ponteiro do tipo SDL_GameController 
 
 
  
  | 
        
          | bool InputManager::quitRequested |  | private | 
 
Armazena a informação se botão de sair ou Alt+F4 foi pressionado. 
 
 
  
  | 
        
          | int InputManager::updateCounter |  | private | 
 
Armazena a informação de quantas vezes o update foi chamada. É usado nos <input>Update para saber se a modificação no estado foi detectada no frame corrente. 
 
 
A documentação para esta classe foi gerada a partir dos seguintes arquivos: