#include "HydraInputManager.h" #include "../windowmanager/HydraWindowManager.h" void HydraInputManager::ProcessInput() { bool quit = false; m_mouse_change = glm::vec2(); m_key_down.clear(); m_key_up.clear(); while (!quit) { HydraKeyPressStuct key_press; if (HydraWindowManager::GetKeyPress(key_press)) { //DebugLog("Got Key " + std::to_string(key_press.key_code)); m_key_presses.push_back(key_press); if ((key_press.key_code >= 0) && (key_press.key_code < 512)) { if (key_press.key_action == KEY_PRESS_ACTIONS::HYDRA_KEY_PRESSED) { m_keys[key_press.key_code] = 1; m_key_up.push_back(key_press.key_code); } else { m_keys[key_press.key_code] = 0; m_key_down.push_back(key_press.key_code); } } if (m_key_presses.size() > 10000) { m_key_presses.pop_back(); } } else { quit = true; } } quit = false; bool new_mouse_movement = false; while (!quit) { HydraMouseMoveStruct mouse_move; if (HydraWindowManager::GetMouseMove(mouse_move)) { m_mouse_moves.push(glm::vec2(mouse_move.x, mouse_move.y)); new_mouse_movement = true; if (m_mouse_moves.size() > 10000) { m_mouse_moves.pop(); } } else { quit = true; } } if (m_mouse_moves.size() > 0) { if (!m_mouse_reset) { m_mouse_change = m_last_mouse - m_mouse_moves.back(); m_last_mouse = m_mouse_moves.back(); } else { m_mouse_change = glm::vec2(0); m_last_mouse = m_mouse_moves.back(); m_mouse_reset = false; } } } bool HydraInputManager::KeyPressed(HYDRA_KEY_CODES key) { return m_keys[(unsigned int)key] == 1; }