diff options
author | 2015-09-12 10:23:53 +0200 | |
---|---|---|
committer | 2015-09-12 10:23:53 +0200 | |
commit | 7ca8f88a5c399317265d9a2f5132eab2ab7723ac (patch) | |
tree | cf7af75fb307bd040508c4c2455d3bd6755619f4 /3rdparty/bgfx/examples/common/entry/input.cpp | |
parent | 6d06509293e2fe6b1743085471f0ff5268a1b351 (diff) |
Added latest BGFX (nw)
Diffstat (limited to '3rdparty/bgfx/examples/common/entry/input.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/common/entry/input.cpp | 54 |
1 files changed, 48 insertions, 6 deletions
diff --git a/3rdparty/bgfx/examples/common/entry/input.cpp b/3rdparty/bgfx/examples/common/entry/input.cpp index 871bc96ea1d..a0618f86c9c 100644 --- a/3rdparty/bgfx/examples/common/entry/input.cpp +++ b/3rdparty/bgfx/examples/common/entry/input.cpp @@ -7,6 +7,7 @@ #include "entry_p.h" #include "input.h" +#include "cmd.h" #include <bx/allocator.h> #include <bx/ringbuffer.h> @@ -88,10 +89,10 @@ struct Keyboard return state; } - static void decodeKeyState(uint32_t _state, uint8_t& _modifiers, bool& _down) + static bool decodeKeyState(uint32_t _state, uint8_t& _modifiers) { _modifiers = (_state>>16)&0xff; - _down = 0 != ( (_state>>8)&0xff); + return 0 != ( (_state>> 8)&0xff); } void setKeyState(entry::Key::Enum _key, uint8_t _modifiers, bool _down) @@ -100,6 +101,24 @@ struct Keyboard m_once[_key] = false; } + bool getKeyState(entry::Key::Enum _key, uint8_t* _modifiers) + { + uint8_t modifiers; + _modifiers = NULL == _modifiers ? &modifiers : _modifiers; + + return decodeKeyState(m_key[_key], *_modifiers); + } + + uint8_t getModifiersState() + { + uint8_t modifiers = 0; + for (uint32_t ii = 0; ii < entry::Key::Count; ++ii) + { + modifiers |= (m_key[ii]>>16)&0xff; + } + return modifiers; + } + void pushChar(uint8_t _len, const uint8_t _char[4]) { for (uint32_t len = m_ring.reserve(4) @@ -195,8 +214,7 @@ struct Input for (const InputBinding* binding = _bindings; binding->m_key != entry::Key::None; ++binding) { uint8_t modifiers; - bool down; - Keyboard::decodeKeyState(m_keyboard.m_key[binding->m_key], modifiers, down); + bool down = Keyboard::decodeKeyState(m_keyboard.m_key[binding->m_key], modifiers); if (binding->m_flags == 1) { @@ -205,7 +223,14 @@ struct Input if (modifiers == binding->m_modifiers && !m_keyboard.m_once[binding->m_key]) { - binding->m_fn(binding->m_userData); + if (NULL == binding->m_fn) + { + cmdExec( (const char*)binding->m_userData); + } + else + { + binding->m_fn(binding->m_userData); + } m_keyboard.m_once[binding->m_key] = true; } } @@ -219,7 +244,14 @@ struct Input if (down && modifiers == binding->m_modifiers) { - binding->m_fn(binding->m_userData); + if (NULL == binding->m_fn) + { + cmdExec( (const char*)binding->m_userData); + } + else + { + binding->m_fn(binding->m_userData); + } } } } @@ -287,6 +319,16 @@ void inputSetKeyState(entry::Key::Enum _key, uint8_t _modifiers, bool _down) s_input->m_keyboard.setKeyState(_key, _modifiers, _down); } +bool inputGetKeyState(entry::Key::Enum _key, uint8_t* _modifiers) +{ + return s_input->m_keyboard.getKeyState(_key, _modifiers); +} + +uint8_t inputGetModifiersState() +{ + return s_input->m_keyboard.getModifiersState(); +} + void inputChar(uint8_t _len, const uint8_t _char[4]) { s_input->m_keyboard.pushChar(_len, _char); |