NGN_INPUT.H

Lectura del teclado: Listado de teclas disponibles

key_1 key_2 key_3 key_4 key_5 key_6 key_7 key_8 key_9 key_0
key_Q key_W key_E key_R key_T key_Y key_U key_I key_O key_P
key_A key_S key_D key_F key_G key_H key_J key_K key_L
key_Z key_X key_C key_V key_B key_N key_M
key_SPACE key_ESC key_RETURN key_TAB key_BACK_SPACE
key_ARROW_UP key_ARROW_DOWN key_ARROW_LEFT key_ARROW_RIGHT
key_LEFT_CONTROL key_RIGHT_CONTROL
key_LEFT_SHIFT key_RIGHT_SHIFT
key_LEFT_ALT key_RIGHT_ALT
key_F1 key_F2 key_F3 key_F4 key_F5 key_F6
key_F7 key_F8 key_F9 key_F10 key_F11 key_F12
key_INSERT key_DELETE key_HOME key_END key_PAGE_UP key_PAGE_DOWN
key_GRAVE key_MINUS key_EQUAL
key_LEFT_BRACKET key_RIGHT_BRACKET
key_SEMICLON key_APOSTROPHE key_BACK_SLASH
key_COMMA key_PERIOD key_SLASH
key_PRINT_SCREEN key_SCROLL_LOCK key_PAUSE
nkp_SLASH nkp_ASTERISK nkp_MINUS
nkp_7 nkp_8 nkp_9
nkp_4 nkp_5 nkp_6
nkp_1 nkp_2 nkp_3
nkp_0 nkp_PERIOD nkp_RETURN nkp_PLUS
NGN_Key key_ANY_KEY

Lectura del teclado: Listado de propiedades disponibles

Propiedad

bool down       // Nueva pulsación en la tecla
bool held       // La tecla se mantiene presionada
bool up         // Se ha dejado de presionar la tecla

Ejemplo

if (ngn->input->key_ESC->down) exit_flag = true;

Lectura del estado del ratón: Listado de propiedades disponibles

Propiedad

int32_t x                       // Posición X del ratón en la ventana
int32_t y                       // Posición Y del ratón en la ventana
bool LB [.down, .held, .up]     // Estado del botón izquierdo
bool MB [.down, .held, .up]     // Estado del botón central
bool RB [.down, .held, .up]     // Estado del botón derecho
int32_t wheel_x                 // Scroll de la rueda en X [-1, 0, 1]
int32_t wheel_y                 // Scroll de la rueda en Y [-1, 0, 1]
int32_t raw_x                   // Valor relativo del desplazamiento en X
int32_t raw_y                   // Valor relativo del desplazamiento en Y

Ejemplo

if (ngn->input->mouse.RB.held) {
    my_sprite.x = ngn->input->mouse.x;
    my_sprite.y = ngn->input->mouse.y;
}

Acceso al controlador (pad o joystick)

Propiedad

int32_t controllers

Descripción

Indica el número de controladores conectados. Por defecto, se pueden gestionar hasta un máximo de 8 controladores diferentes que cumplan la norma X-INPUT. La asignación de los axis o botones puede variar en función del controlador conectado. En caso de conexión o desconexión de un controlador en caliente, la librería intentara asignar el mismo SLOT de conexión a dicho controlador.

Propiedad

controller[n]

Descripción

La clase “input” dispone de acceso a los controladores a partir de la propiedad “controller[n]”, donde "n" indica el SLOT de conexión a leer [0 - 7]. Si se accede a un SLOT sin conexión, se devuelven los valores por defecto. Las propiedades disponibles para cada controlador son:

bool available                      // ¿Está disponible el controlador?
int32_t device_id                   // ID de la instancia del controlador
std::string name                    // Nombre del controlador
float axis[n]                       // Valor del eje "n", varía entre -1.0f y 1.0f
bool button[n] [.down, .held, .up]  // Estado del botón "n"
bool dpad.up [.down, .held, .up]    // Estado del DIGITAL PAD (cruzeta) Arriba
bool dpad.down [.down, .held, .up]  // Estado del DIGITAL PAD (cruzeta) Abajo
bool dpad.left [.down, .held, .up]  // Estado del DIGITAL PAD (cruzeta) Izquierda
bool dpad.right [.down, .held, .up] // Estado del DIGITAL PAD (cruzeta) Derecha
uint8_t pov                         // Valor del POV [máscara de bits de 4 bits] (Obsoleto)
bool pov_up [.down, .held, .up]     // POV como tecla cursor (Arriba) (Obsoleto)
bool pov_down [.down, .held, .up]   // POV como tecla cursor (Abajo) (Obsoleto)
bool pov_left [.down, .held, .up]   // POV como tecla cursor (Izquierda) (Obsoleto)
bool pov_right [.down, .held, .up]  // POV como tecla cursor (Derecha) (Obsoleto)
bool any_button [.down, .held, .up] // Se ha pulsado alguno de los botones
bool any_axis [.down, .held, .up]   // Se ha movido alguno de los ejes o el DPAD
bool activity [.down, .held, .up]   // Se ha registrado alguna actividad
bool rumble_available               // ¿Está disponible el efecto "rumble"?

Se puede acceder de una manera mas fácil a los diferentes axis y botones del controlador mediante las siguientes contantes:

uint32_t XBOX_BUTTON_A = 0;
uint32_t XBOX_BUTTON_B = 1;
uint32_t XBOX_BUTTON_X = 2;
uint32_t XBOX_BUTTON_Y = 3;
uint32_t XBOX_BUTTON_L = 4;
uint32_t XBOX_BUTTON_R = 5;
uint32_t XBOX_BUTTON_BACK = 6;
uint32_t XBOX_BUTTON_START = 7;
uint32_t XBOX_BUTTON_STICK_L = 8;
uint32_t XBOX_BUTTON_STICK_R = 9;
uint32_t XBOX_BUTTON_XBOX = 10;
uint32_t XBOX_STICK_L_AXIS_X = 0;
uint32_t XBOX_STICK_L_AXIS_Y = 1;
uint32_t XBOX_STICK_R_AXIS_X = 2;
uint32_t XBOX_STICK_R_AXIS_Y = 3;
uint32_t XBOX_TRIGGER_AXIS = 4;
float XBOX_AXIS_DEADZONE = 0.35f;

Ejemplo

if (ngn->input->controller[0].button[XBOX_BUTTON_A].down) ...
if (ngn->input->controller[0].dpad.left.held) ...
position.x += (ngn->input->controller[0].axis[XBOX_STICK_L_AXIS_X] * speed);
if (ngn->input->controller[1].axis[XBOX_STICK_R_AXIS_Y] > XBOX_AXIS_DEADZONE) ...

Método

int32_t ControllerRumble(
    uint32_t controller_id,     // ID del controlador (0 – 7)
    float intensity,            // Intensidad (0.0f – 1.0f)
    uint32_t duration           // Duración en ms (> 0)
);

Descripción

Ejecuta el efecto de vibración del controlador indicado (si dicho controlador tiene soporte para el efecto), con la intensidad y duración indicados en los parámetros. Este método devuelve -1 en caso de error.

Ejemplo

ngn->input->ControllerRumble(0, 0.75f, 500);
Volver al Índice English Version Volver Arriba