summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/entry/entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/examples/common/entry/entry.cpp')
-rw-r--r--3rdparty/bgfx/examples/common/entry/entry.cpp188
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;
}
}