diff options
Diffstat (limited to '3rdparty/bgfx/examples/common/entry/entry.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/common/entry/entry.cpp | 188 |
1 files changed, 168 insertions, 20 deletions
diff --git a/3rdparty/bgfx/examples/common/entry/entry.cpp b/3rdparty/bgfx/examples/common/entry/entry.cpp index 07826f1d035..61dbe0b3c9c 100644 --- a/3rdparty/bgfx/examples/common/entry/entry.cpp +++ b/3rdparty/bgfx/examples/common/entry/entry.cpp @@ -3,12 +3,16 @@ * License: http://www.opensource.org/licenses/BSD-2-Clause */ -#include <bgfx.h> +#include <bgfx/bgfx.h> #include <bx/string.h> #include <bx/readerwriter.h> #include <time.h> +#if BX_PLATFORM_EMSCRIPTEN +# include <emscripten.h> +#endif // BX_PLATFORM_EMSCRIPTEN + #include "entry_p.h" #include "cmd.h" #include "input.h" @@ -38,6 +42,118 @@ BX_PRAGMA_DIAGNOSTIC_POP(); } #endif // ENTRY_CONFIG_IMPLEMENT_DEFAULT_ALLOCATOR + static const char* s_keyName[] = + { + "None", + "Esc", + "Return", + "Tab", + "Space", + "Backspace", + "Up", + "Down", + "Left", + "Right", + "Insert", + "Delete", + "Home", + "End", + "PageUp", + "PageDown", + "Print", + "Plus", + "Minus", + "LeftBracket", + "RightBracket", + "Semicolon", + "Quote", + "Comma", + "Period", + "Slash", + "Backslash", + "Tilde", + "F1", + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "F10", + "F11", + "F12", + "NumPad0", + "NumPad1", + "NumPad2", + "NumPad3", + "NumPad4", + "NumPad5", + "NumPad6", + "NumPad7", + "NumPad8", + "NumPad9", + "Key0", + "Key1", + "Key2", + "Key3", + "Key4", + "Key5", + "Key6", + "Key7", + "Key8", + "Key9", + "KeyA", + "KeyB", + "KeyC", + "KeyD", + "KeyE", + "KeyF", + "KeyG", + "KeyH", + "KeyI", + "KeyJ", + "KeyK", + "KeyL", + "KeyM", + "KeyN", + "KeyO", + "KeyP", + "KeyQ", + "KeyR", + "KeyS", + "KeyT", + "KeyU", + "KeyV", + "KeyW", + "KeyX", + "KeyY", + "KeyZ", + "GamepadA", + "GamepadB", + "GamepadX", + "GamepadY", + "GamepadThumbL", + "GamepadThumbR", + "GamepadShoulderL", + "GamepadShoulderR", + "GamepadUp", + "GamepadDown", + "GamepadLeft", + "GamepadRight", + "GamepadBack", + "GamepadStart", + "GamepadGuide", + }; + BX_STATIC_ASSERT(Key::Count == BX_COUNTOF(s_keyName) ); + + const char* getName(Key::Enum _key) + { + BX_CHECK(_key < Key::Count, "Invalid key %d.", _key); + return s_keyName[_key]; + } + char keyToAscii(Key::Enum _key, uint8_t _modifiers) { const bool isAscii = (Key::Key0 <= _key && _key <= Key::KeyZ) @@ -98,11 +214,6 @@ BX_PRAGMA_DIAGNOSTIC_POP(); return false; } - void cmd(const void* _userData) - { - cmdExec( (const char*)_userData); - } - int cmdMouseLock(CmdContext* /*_context*/, void* /*_userData*/, int _argc, char const* const* _argv) { if (_argc > 1) @@ -126,6 +237,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); || setOrToggle(s_reset, "msaa", BGFX_RESET_MSAA_X16, 1, _argc, _argv) || setOrToggle(s_reset, "flush", BGFX_RESET_FLUSH_AFTER_RENDER, 1, _argc, _argv) || setOrToggle(s_reset, "flip", BGFX_RESET_FLIP_AFTER_RENDER, 1, _argc, _argv) + || setOrToggle(s_reset, "hidpi", BGFX_RESET_HIDPI, 1, _argc, _argv) ) { return 0; @@ -156,6 +268,12 @@ BX_PRAGMA_DIAGNOSTIC_POP(); return 0; } + else if (0 == strcmp(_argv[1], "fullscreen") ) + { + WindowHandle window = { 0 }; + toggleFullscreen(window); + return 0; + } } return 1; @@ -169,22 +287,49 @@ BX_PRAGMA_DIAGNOSTIC_POP(); static const InputBinding s_bindings[] = { - { entry::Key::KeyQ, entry::Modifier::LeftCtrl, 1, cmd, "exit" }, - { entry::Key::F1, entry::Modifier::None, 1, cmd, "graphics stats" }, - { entry::Key::GamepadStart, entry::Modifier::None, 1, cmd, "graphics stats" }, - { entry::Key::F1, entry::Modifier::LeftShift, 1, cmd, "graphics stats 0\ngraphics text 0" }, - { entry::Key::F3, entry::Modifier::None, 1, cmd, "graphics wireframe" }, - { entry::Key::F4, entry::Modifier::None, 1, cmd, "graphics hmd" }, - { entry::Key::F4, entry::Modifier::LeftShift, 1, cmd, "graphics hmdrecenter" }, - { entry::Key::F4, entry::Modifier::LeftCtrl, 1, cmd, "graphics hmddbg" }, - { entry::Key::F7, entry::Modifier::None, 1, cmd, "graphics vsync" }, - { entry::Key::F8, entry::Modifier::None, 1, cmd, "graphics msaa" }, - { entry::Key::F9, entry::Modifier::None, 1, cmd, "graphics flush" }, - { entry::Key::Print, entry::Modifier::None, 1, cmd, "graphics screenshot" }, + { entry::Key::KeyQ, entry::Modifier::LeftCtrl, 1, NULL, "exit" }, + { entry::Key::KeyQ, entry::Modifier::RightCtrl, 1, NULL, "exit" }, + { entry::Key::KeyF, entry::Modifier::LeftCtrl, 1, NULL, "graphics fullscreen" }, + { entry::Key::KeyF, entry::Modifier::RightCtrl, 1, NULL, "graphics fullscreen" }, + { entry::Key::Return, entry::Modifier::RightAlt, 1, NULL, "graphics fullscreen" }, + { entry::Key::F1, entry::Modifier::None, 1, NULL, "graphics stats" }, + { entry::Key::GamepadStart, entry::Modifier::None, 1, NULL, "graphics stats" }, + { entry::Key::F1, entry::Modifier::LeftShift, 1, NULL, "graphics stats 0\ngraphics text 0" }, + { entry::Key::F3, entry::Modifier::None, 1, NULL, "graphics wireframe" }, + { entry::Key::F4, entry::Modifier::None, 1, NULL, "graphics hmd" }, + { entry::Key::F4, entry::Modifier::LeftShift, 1, NULL, "graphics hmdrecenter" }, + { entry::Key::F4, entry::Modifier::LeftCtrl, 1, NULL, "graphics hmddbg" }, + { entry::Key::F7, entry::Modifier::None, 1, NULL, "graphics vsync" }, + { entry::Key::F8, entry::Modifier::None, 1, NULL, "graphics msaa" }, + { entry::Key::F9, entry::Modifier::None, 1, NULL, "graphics flush" }, + { entry::Key::F10, entry::Modifier::None, 1, NULL, "graphics hidpi" }, + { entry::Key::Print, entry::Modifier::None, 1, NULL, "graphics screenshot" }, INPUT_BINDING_END }; +#if BX_PLATFORM_EMSCRIPTEN + static AppI* s_app; + static void updateApp() + { + s_app->update(); + } +#endif // BX_PLATFORM_EMSCRIPTEN + + int runApp(AppI* _app, int _argc, char** _argv) + { + _app->init(_argc, _argv); + +#if BX_PLATFORM_EMSCRIPTEN + s_app = _app; + emscripten_set_main_loop(&updateApp, -1, 1); +#else + while (_app->update() ); +#endif // BX_PLATFORM_EMSCRIPTEN + + return _app->shutdown(); + } + int main(int _argc, char** _argv) { //DBG(BX_COMPILER_NAME " / " BX_CPU_NAME " / " BX_ARCH_NAME " / " BX_PLATFORM_NAME); @@ -203,7 +348,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); inputAddBindings("bindings", s_bindings); entry::WindowHandle defaultWindow = { 0 }; - entry::setWindowTitle(defaultWindow, bx::baseName(_argv[0])); + entry::setWindowTitle(defaultWindow, bx::baseName(_argv[0]) ); int32_t result = ::_main_(_argc, _argv); @@ -319,7 +464,10 @@ BX_PRAGMA_DIAGNOSTIC_POP(); case Event::Window: break; - default: + case Event::Suspend: + break; + + default: break; } } |