82 lines
1.6 KiB
C++
82 lines
1.6 KiB
C++
#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;
|
|
} |