5 #include <qapplication.h> 20 static std::map<Qt::MouseButton, bool> mouseButtonState, mouseButtonStateCache, mouseButtonStatePrevCache;
21 static std::map<Qt::Key, bool> keyState, keyStateCache, keyStatePrevCache;
22 static float mouseDelta, mouseDeltaCache;
23 static std::map<QString, float> axisValues, axisValuesCache, axisValuesPrevCache;
25 template <
class TKey,
class TValue>
26 static TValue mapDefaultGet(std::map<TKey, TValue>& m, TKey key, TValue defaultValue) {
27 if (m.count(key) == 0)
return defaultValue;
34 static bool getKey(Qt::Key keycode) {
35 return mapDefaultGet(keyStateCache, keycode,
false);
37 static bool getKeyDown(Qt::Key keycode) {
38 return mapDefaultGet(keyStateCache, keycode,
false) && !mapDefaultGet(keyStatePrevCache, keycode,
false);
40 static bool getKeyUp(Qt::Key keycode) {
41 return (!mapDefaultGet(keyStateCache, keycode,
false)) && mapDefaultGet(keyStatePrevCache, keycode,
false);
43 static void setKey(Qt::Key keycode,
bool down) {
44 keyState[keycode] = down;
48 static bool getMouseButton(Qt::MouseButton i) {
49 return mapDefaultGet(mouseButtonStateCache, i,
false);
51 static bool getMouseButtonDown(Qt::MouseButton i) {
52 return mapDefaultGet(mouseButtonStateCache, i,
false) && !mapDefaultGet(mouseButtonStatePrevCache, i,
false);
54 static bool getMouseButtonUp(Qt::MouseButton i) {
55 return (!mapDefaultGet(mouseButtonStateCache, i,
false)) && mapDefaultGet(mouseButtonStatePrevCache, i,
false);
57 static void setMouseButton(Qt::MouseButton i,
bool down) {
59 mouseButtonState[i] = down;
63 static float getMouseWheelDelta() {
64 return mouseDeltaCache;
66 static void setMouseWheelDelta(
float delta) {
71 static float getAxis(
const QString& name) {
72 return mapDefaultGet(axisValuesCache, name, 0.0f);
74 static float getAxisDelta(
const QString& name) {
75 return mapDefaultGet(axisValuesCache, name, 0.0f) - mapDefaultGet(axisValuesPrevCache, name, 0.0f);
77 static void setAxis(
const QString& name,
float value) {
78 axisValues[name] = value;
82 static void beforeUpdate() {
84 keyStatePrevCache = keyStateCache;
85 mouseButtonStatePrevCache = mouseButtonStateCache;
86 axisValuesPrevCache = axisValuesCache;
87 keyStateCache = keyState;
88 mouseButtonStateCache = mouseButtonState;
89 axisValuesCache = axisValues;
91 mouseDeltaCache = mouseDelta;