rnr/Projects/Engine/Source/App/InputManager.cpp

87 lines
2.2 KiB
C++

#include <App/InputManager.hpp>
#include <App/V8/DataModel/Camera.hpp>
#include <stdio.h>
namespace RNR
{
IInputManager::IInputManager()
{
state.mouse_primary = false;
state.mouse_secondary = false;
state.mouse_middle = false;
state.mouse_scroll = 0;
}
void IInputManager::keyDown(int scancode)
{
auto it = std::find(scancodes_down.begin(), scancodes_down.end(), scancode);
if(it == scancodes_down.end())
scancodes_down.push_back(scancode);
}
void IInputManager::keyUp(int scancode)
{
auto it = std::find(scancodes_down.begin(), scancodes_down.end(), scancode);
if(it != scancodes_down.end())
scancodes_down.erase(it);
}
bool IInputManager::isKeyDown(int scancode)
{
auto it = std::find(scancodes_down.begin(), scancodes_down.end(), scancode);
if(it != scancodes_down.end())
return true;
return false;
}
void IInputManager::mouseMoveAbsolute(float x, float y)
{
}
void IInputManager::mouseMoveRelative(float x, float y)
{
if(m_world)
{
float xd = x * m_world->getLastDelta();
float yd = y * m_world->getLastDelta();
Workspace* workspace = m_world->getWorkspace();
Camera* camera = workspace->getCurrentCamera();
if(camera && state.mouse_secondary)
{
camera->cameraFrame(xd, yd);
resetMouse();
}
}
}
void IInputManager::frame()
{
Workspace* workspace = m_world->getWorkspace();
Camera* camera = workspace->getCurrentCamera();
if(camera)
camera->cameraFrame(0, 0, false); // update camera position
}
void IInputManager::mousePrimaryState(bool down)
{
state.mouse_primary = down;
}
void IInputManager::mouseSecondaryState(bool down)
{
state.mouse_secondary = down;
}
void IInputManager::mouseMiddleState(bool down)
{
state.mouse_middle = down;
}
void IInputManager::mouseScrollState(float scroll)
{
state.mouse_scroll = scroll;
}
}