charcoal/OpenGLEngine/InputManager.cpp
elipzer 3485bcb2a0 Improved Batch Functionality
Now batches are actually batches.

Also added the MeshFactory class.

Drawing modes are now specified with DrawMode instead of the
GLenum. Renderables must be specified with a draw mode.
2018-09-06 23:22:40 -04:00

77 lines
1.3 KiB
C++

#include "InputManager.h"
InputManager::InputManager() {}
InputManager::~InputManager() {}
void InputManager::mark()
{
m_keys_pressed.clear();
m_mouse_delta = { 0, 0 };
m_scroll_distance = 0;
}
void InputManager::key_down(KeyCode key_code)
{
if (!m_keys_down[key_code])
{
m_keys_down[key_code] = true;
m_keys_pressed[key_code] = true;
}
}
void InputManager::key_up(KeyCode key_code)
{
m_keys_down[key_code] = false;
m_keys_pressed[key_code] = false;
}
void InputManager::mouse_move(const ivec2& position)
{
m_mouse_delta += position - m_mouse_position;
m_mouse_position = position;
}
void InputManager::mouse_scroll(int distance)
{
m_scroll_distance += distance;
}
bool InputManager::is_key_down(KeyCode key_code)
{
return m_keys_down[key_code];
}
bool InputManager::is_key_pressed(KeyCode key_code)
{
auto iter = m_keys_pressed.find(key_code);
if (iter == m_keys_pressed.end())
return false;
else
return iter->second;
}
bool InputManager::is_key_released(KeyCode key_code)
{
auto iter = m_keys_pressed.find(key_code);
if (iter == m_keys_pressed.end())
return false;
else
return !iter->second;
}
const ivec2& InputManager::get_mouse_position()
{
return m_mouse_position;
}
const ivec2& InputManager::get_mouse_delta()
{
return m_mouse_delta;
}
const int& InputManager::get_scroll_distance()
{
return m_scroll_distance;
}