Files
BlitzNext/Runtime/gfx/gxdevice.cpp
T
Michael Fabian 'Xaymar' Dirks a16218e1d5 runtime: CMake-ify gx
2019-01-18 17:03:37 +01:00

76 lines
1.1 KiB
C++

#include "gxdevice.hpp"
#include "gxruntime.hpp"
#include "std.hpp"
gxDevice::gxDevice()
{
reset();
}
gxDevice::~gxDevice() {}
void gxDevice::reset()
{
memset(down_state, 0, sizeof(down_state));
memset(axis_states, 0, sizeof(axis_states));
memset(hit_count, 0, sizeof(hit_count));
put = get = 0;
}
void gxDevice::downEvent(int key)
{
down_state[key] = true;
++hit_count[key];
if (put - get < QUE_SIZE)
que[put++ & QUE_MASK] = key;
}
void gxDevice::upEvent(int key)
{
down_state[key] = false;
}
void gxDevice::setDownState(int key, bool down)
{
if (down == down_state[key])
return;
if (down)
downEvent(key);
else
upEvent(key);
}
void gxDevice::flush()
{
update();
memset(hit_count, 0, sizeof(hit_count));
put = get = 0;
}
bool gxDevice::keyDown(int key)
{
update();
return down_state[key];
}
int gxDevice::keyHit(int key)
{
update();
int n = hit_count[key];
hit_count[key] -= n;
return n;
}
int gxDevice::getKey()
{
update();
return get < put ? que[get++ & QUE_MASK] : 0;
}
float gxDevice::getAxisState(int axis)
{
update();
return axis_states[axis];
}