From 1d5900385844fe6d4f6493f83eafcbe5b9e2573c Mon Sep 17 00:00:00 2001 From: Green Sky Date: Sat, 12 Dec 2020 18:21:45 +0100 Subject: [PATCH] fix entt update --- framework/engine/test/default_us_test.cpp | 2 + .../engine/test/update_strategy_test.cpp | 2 + .../src/mm/imgui/imgui_entt_entity_editor.hpp | 6 +- framework/imgui/src/mm/services/imgui_s.cpp | 80 ++++++++++--------- framework/imgui/src/mm/services/imgui_s.hpp | 2 + .../imgui/src/mm/services/scene_tools.cpp | 1 + framework/imgui/test/scene_tools_test.cpp | 2 + framework/imgui/test/sound_test.cpp | 2 + framework/imgui/test/text_edit_test.cpp | 1 + framework/imgui/test/widget_test.cpp | 2 + .../input/src/mm/services/input_service.cpp | 1 + framework/input/test/input_visualizer.cpp | 1 + .../src/mm/services/opengl_renderer.cpp | 7 +- .../batched_spritesheet_render_task_test.cpp | 2 + .../test/blur_render_task_test.cpp | 2 + .../test/imgui_render_task_test.cpp | 2 + .../test/simple_sprite_render_task_test.cpp | 2 + .../simple_spritesheet_render_task_test.cpp | 2 + .../test/tilemap_render_task_test.cpp | 2 + .../resource_manager/test/resource_test.cpp | 2 + .../src/mm/services/screen_director.cpp | 1 + framework/screen_director/test/sd_test.cpp | 12 +-- .../src/mm/services/sdl_service.cpp | 1 + .../src/mm/services/simple_scene.cpp | 1 + .../src/mm/services/simple_sdl_renderer.cpp | 1 + framework/sound/test/loader_test.cpp | 2 + 26 files changed, 91 insertions(+), 50 deletions(-) diff --git a/framework/engine/test/default_us_test.cpp b/framework/engine/test/default_us_test.cpp index 4c26e9b..e8e03c0 100644 --- a/framework/engine/test/default_us_test.cpp +++ b/framework/engine/test/default_us_test.cpp @@ -11,6 +11,8 @@ using ::testing::Return; using ::testing::_; +using namespace entt::literals; + class MockService : public MM::Services::Service { public: const char* name(void) override { return "MockService"; } diff --git a/framework/engine/test/update_strategy_test.cpp b/framework/engine/test/update_strategy_test.cpp index d112140..25c50f4 100644 --- a/framework/engine/test/update_strategy_test.cpp +++ b/framework/engine/test/update_strategy_test.cpp @@ -11,6 +11,8 @@ using ::testing::Return; using ::testing::_; +using namespace entt::literals; + class MockUpdateStrategy : public MM::UpdateStrategies::UpdateStrategy { public: MOCK_METHOD( diff --git a/framework/imgui/src/mm/imgui/imgui_entt_entity_editor.hpp b/framework/imgui/src/mm/imgui/imgui_entt_entity_editor.hpp index d8a5eec..c9e71f8 100644 --- a/framework/imgui/src/mm/imgui/imgui_entt_entity_editor.hpp +++ b/framework/imgui/src/mm/imgui/imgui_entt_entity_editor.hpp @@ -94,9 +94,9 @@ public: ComponentInfo& registerComponent(const ComponentInfo& component_info) { auto index = entt::type_hash::value(); - auto [it, insert_result] = component_infos.insert_or_assign(index, component_info); - MM_IEEE_ASSERT(insert_result); - return std::get(*it); + auto insert_info = component_infos.insert_or_assign(index, component_info); + MM_IEEE_ASSERT(insert_info.second); + return std::get(*insert_info.first); } template diff --git a/framework/imgui/src/mm/services/imgui_s.cpp b/framework/imgui/src/mm/services/imgui_s.cpp index 8d89312..e48f002 100644 --- a/framework/imgui/src/mm/services/imgui_s.cpp +++ b/framework/imgui/src/mm/services/imgui_s.cpp @@ -65,44 +65,9 @@ bool ImGuiService::enable(Engine& engine) { #endif } - // TODO: register event handle - _event_handle = sdl_ss.addEventHandler([](const SDL_Event& e) { - if (!ImGui_ImplSDL2_ProcessEvent(&e)) { - return false; // if the event was not relevant to imgui anyway - } - - auto& io = ImGui::GetIO(); - // keyboard - if (( - e.type == SDL_KEYDOWN || - e.type == SDL_KEYUP || - e.type == SDL_TEXTEDITING || - e.type == SDL_TEXTINPUT - ) - && io.WantCaptureKeyboard) { - return true; - } - // mouse - if (( - e.type == SDL_MOUSEMOTION || - e.type == SDL_MOUSEBUTTONUP || - e.type == SDL_MOUSEBUTTONDOWN || - e.type == SDL_MOUSEWHEEL // ???? - ) - && io.WantCaptureMouse) { - return true; - } - //// controller ??? - //if (( - //e.type == SDL_CONTROLLERBUTTONUP || - //e.type == SDL_CONTROLLERBUTTONDOWN - //)[> - //&& io.WantCaptureKeyboard*/) { - //return false; - //} - - return false; - }); + _event_handle = sdl_ss.addEventHandler( + [this](const SDL_Event& e) { return handle_sdl_event(e); } + ); return true; } @@ -121,6 +86,7 @@ void ImGuiService::disable(Engine& engine) { } std::vector ImGuiService::registerUpdates(void) { + using namespace entt::literals; return { { "ImGuiService::new_frame"_hs, @@ -144,5 +110,43 @@ void ImGuiService::imgui_new_frame(Engine& engine) { ImGui::NewFrame(); } +bool ImGuiService::handle_sdl_event(const SDL_Event& e) { + if (!ImGui_ImplSDL2_ProcessEvent(&e)) { + return false; // if the event was not relevant to imgui anyway + } + + auto& io = ImGui::GetIO(); + // keyboard + if (( + e.type == SDL_KEYDOWN || + e.type == SDL_KEYUP || + e.type == SDL_TEXTEDITING || + e.type == SDL_TEXTINPUT + ) + && io.WantCaptureKeyboard) { + return true; + } + // mouse + if (( + e.type == SDL_MOUSEMOTION || + e.type == SDL_MOUSEBUTTONUP || + e.type == SDL_MOUSEBUTTONDOWN || + e.type == SDL_MOUSEWHEEL // ???? + ) + && io.WantCaptureMouse) { + return true; + } + //// controller ??? + //if (( + //e.type == SDL_CONTROLLERBUTTONUP || + //e.type == SDL_CONTROLLERBUTTONDOWN + //)[> + //&& io.WantCaptureKeyboard*/) { + //return false; + //} + + return false; +} + } // namespace MM::Services diff --git a/framework/imgui/src/mm/services/imgui_s.hpp b/framework/imgui/src/mm/services/imgui_s.hpp index 25039b5..49df490 100644 --- a/framework/imgui/src/mm/services/imgui_s.hpp +++ b/framework/imgui/src/mm/services/imgui_s.hpp @@ -23,6 +23,8 @@ namespace MM::Services { private: void imgui_new_frame(Engine& engine); + + bool handle_sdl_event(const SDL_Event& e); }; } // namespace MM::Services diff --git a/framework/imgui/src/mm/services/scene_tools.cpp b/framework/imgui/src/mm/services/scene_tools.cpp index 3f3bf71..55d188a 100644 --- a/framework/imgui/src/mm/services/scene_tools.cpp +++ b/framework/imgui/src/mm/services/scene_tools.cpp @@ -203,6 +203,7 @@ namespace MM::Services { } std::vector ImGuiSceneToolsService::registerUpdates(void) { + using namespace entt::literals; return { { "ImGuiSceneToolsService::render"_hs, diff --git a/framework/imgui/test/scene_tools_test.cpp b/framework/imgui/test/scene_tools_test.cpp index a399b92..dfc915a 100644 --- a/framework/imgui/test/scene_tools_test.cpp +++ b/framework/imgui/test/scene_tools_test.cpp @@ -16,6 +16,8 @@ static char* argv0; +using namespace entt::literals; + TEST(imgui_scene_tools, it) { MM::Engine engine; diff --git a/framework/imgui/test/sound_test.cpp b/framework/imgui/test/sound_test.cpp index e7fb73f..22593b5 100644 --- a/framework/imgui/test/sound_test.cpp +++ b/framework/imgui/test/sound_test.cpp @@ -27,6 +27,8 @@ const char* argv0; +using namespace entt::literals; + class ImGuiSpeechy : public MM::Services::Service { private: SoLoud::Speech speech; diff --git a/framework/imgui/test/text_edit_test.cpp b/framework/imgui/test/text_edit_test.cpp index 0946611..f8b6092 100644 --- a/framework/imgui/test/text_edit_test.cpp +++ b/framework/imgui/test/text_edit_test.cpp @@ -22,6 +22,7 @@ static char* argv0; +using namespace entt::literals; class TemplateUpdateMainService : public MM::Services::Service { std::function _fn; diff --git a/framework/imgui/test/widget_test.cpp b/framework/imgui/test/widget_test.cpp index 5b3b97b..722937d 100644 --- a/framework/imgui/test/widget_test.cpp +++ b/framework/imgui/test/widget_test.cpp @@ -18,6 +18,8 @@ const char* argv0; +using namespace entt::literals; + TEST(imgui_widgets, basic) { MM::Engine engine; diff --git a/framework/input/src/mm/services/input_service.cpp b/framework/input/src/mm/services/input_service.cpp index 7066838..01fa27f 100644 --- a/framework/input/src/mm/services/input_service.cpp +++ b/framework/input/src/mm/services/input_service.cpp @@ -106,6 +106,7 @@ void InputService::disable(Engine& engine) { } std::vector InputService::registerUpdates(void) { + using namespace entt::literals; return { { "InputService::update"_hs, diff --git a/framework/input/test/input_visualizer.cpp b/framework/input/test/input_visualizer.cpp index 209e49b..1e88218 100644 --- a/framework/input/test/input_visualizer.cpp +++ b/framework/input/test/input_visualizer.cpp @@ -47,6 +47,7 @@ class InputVisualizer : public MM::Services::Service { } std::vector registerUpdates(void) override { + using namespace entt::literals; return { { "InputVisualizer::render"_hs, diff --git a/framework/opengl_renderer/src/mm/services/opengl_renderer.cpp b/framework/opengl_renderer/src/mm/services/opengl_renderer.cpp index 1b530ff..484c710 100644 --- a/framework/opengl_renderer/src/mm/services/opengl_renderer.cpp +++ b/framework/opengl_renderer/src/mm/services/opengl_renderer.cpp @@ -33,6 +33,8 @@ namespace MM::Services { +using namespace entt::literals; + OpenGLRenderer::OpenGLRenderer(void) { MM::Logger::initSectionLogger("OpenGL"); MM::Logger::initSectionLogger("OpenGLRenderer"); @@ -71,8 +73,8 @@ bool OpenGLRenderer::enable(Engine& engine) { _sdl_event_handle = sdl_s.addEventHandler([this, &engine](const SDL_Event& e) -> bool { if (e.type == SDL_WINDOWEVENT) { if (e.window.event == SDL_WINDOWEVENT_RESIZED || e.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) { - auto& sdl_s = engine.getService(); - auto new_window_size = sdl_s.getWindowSize(); + auto& sdl = engine.getService(); + auto new_window_size = sdl.getWindowSize(); glViewport(0, 0, new_window_size.first, new_window_size.second); // TODO: recreate fbos, dirvers seem to have problems otherwise @@ -111,7 +113,6 @@ bool OpenGLRenderer::enable(Engine& engine) { } { // default texures - using namespace entt::literals; auto& rm_t = MM::ResourceManager::ref(); if (!rm_t.contains("default"_hs)) { if (!rm_t.load("default", default_png, default_png_len)) { diff --git a/framework/opengl_renderer/test/batched_spritesheet_render_task_test.cpp b/framework/opengl_renderer/test/batched_spritesheet_render_task_test.cpp index 9f2a16c..f659aab 100644 --- a/framework/opengl_renderer/test/batched_spritesheet_render_task_test.cpp +++ b/framework/opengl_renderer/test/batched_spritesheet_render_task_test.cpp @@ -20,6 +20,8 @@ #include #include "res/textures.zip.h" +using namespace entt::literals; + const char* argv0; TEST(batched_spritesheet_render_task, it) { diff --git a/framework/opengl_renderer/test/blur_render_task_test.cpp b/framework/opengl_renderer/test/blur_render_task_test.cpp index 0c038fa..05422ad 100644 --- a/framework/opengl_renderer/test/blur_render_task_test.cpp +++ b/framework/opengl_renderer/test/blur_render_task_test.cpp @@ -28,6 +28,8 @@ #include +using namespace entt::literals; + const char* argv0; TEST(blur_render_task, it) { diff --git a/framework/opengl_renderer/test/imgui_render_task_test.cpp b/framework/opengl_renderer/test/imgui_render_task_test.cpp index afcb733..4fa0799 100644 --- a/framework/opengl_renderer/test/imgui_render_task_test.cpp +++ b/framework/opengl_renderer/test/imgui_render_task_test.cpp @@ -12,6 +12,8 @@ #include +using namespace entt::literals; + TEST(imgui_render_task, demowindow) { MM::Engine engine; diff --git a/framework/opengl_renderer/test/simple_sprite_render_task_test.cpp b/framework/opengl_renderer/test/simple_sprite_render_task_test.cpp index 98d52f4..1d467cf 100644 --- a/framework/opengl_renderer/test/simple_sprite_render_task_test.cpp +++ b/framework/opengl_renderer/test/simple_sprite_render_task_test.cpp @@ -19,6 +19,8 @@ #include +using namespace entt::literals; + const char* argv0; TEST(simple_sprite_render_task, it) { diff --git a/framework/opengl_renderer/test/simple_spritesheet_render_task_test.cpp b/framework/opengl_renderer/test/simple_spritesheet_render_task_test.cpp index baac23e..ddf8217 100644 --- a/framework/opengl_renderer/test/simple_spritesheet_render_task_test.cpp +++ b/framework/opengl_renderer/test/simple_spritesheet_render_task_test.cpp @@ -20,6 +20,8 @@ #include #include "res/textures.zip.h" +using namespace entt::literals; + TEST(simple_spritesheet_render_task, it) { MM::Engine engine; diff --git a/framework/opengl_renderer/test/tilemap_render_task_test.cpp b/framework/opengl_renderer/test/tilemap_render_task_test.cpp index bce4f19..402a7d2 100644 --- a/framework/opengl_renderer/test/tilemap_render_task_test.cpp +++ b/framework/opengl_renderer/test/tilemap_render_task_test.cpp @@ -17,6 +17,8 @@ #include +using namespace entt::literals; + TEST(tilemap_render_task_test, it) { MM::Engine engine; diff --git a/framework/resource_manager/test/resource_test.cpp b/framework/resource_manager/test/resource_test.cpp index 4a48ca0..9af5188 100644 --- a/framework/resource_manager/test/resource_test.cpp +++ b/framework/resource_manager/test/resource_test.cpp @@ -4,6 +4,8 @@ #include +using namespace entt::literals; // :D + // disable, this just tests entt and not MM #if 0 TEST(EngineResourceManagerTest, entt_cache) { diff --git a/framework/screen_director/src/mm/services/screen_director.cpp b/framework/screen_director/src/mm/services/screen_director.cpp index 40b2e4b..00e5a5c 100644 --- a/framework/screen_director/src/mm/services/screen_director.cpp +++ b/framework/screen_director/src/mm/services/screen_director.cpp @@ -26,6 +26,7 @@ void ScreenDirector::disable(MM::Engine&) { } std::vector ScreenDirector::registerUpdates(void) { + using namespace entt::literals; return { { "ScreenDirector::update"_hs, diff --git a/framework/screen_director/test/sd_test.cpp b/framework/screen_director/test/sd_test.cpp index 7f3189c..6c7b280 100644 --- a/framework/screen_director/test/sd_test.cpp +++ b/framework/screen_director/test/sd_test.cpp @@ -140,11 +140,11 @@ TEST(SceneDirectorSimple, online) { auto& screen_1 = sd.screens["screen_1"]; screen_1.start_disable.push_back(engine.type()); screen_1.start_enable.push_back(engine.type()); - screen_1.start_fn = [](MM::Engine& engine) { + screen_1.start_fn = [](MM::Engine& e) { std::cout << "now in screen_1\n"; // and queue next screen immediately (for the purpose of this test) - engine.tryService()->queueChangeScreenTo("screen_2"); + e.tryService()->queueChangeScreenTo("screen_2"); }; screen_1.end_fn = [](auto&) { std::cout << "exiting screen_1\n"; @@ -156,11 +156,11 @@ TEST(SceneDirectorSimple, online) { auto& screen_2 = sd.screens["screen_2"]; screen_2.start_disable.push_back(engine.type()); screen_2.start_enable.push_back(engine.type()); - screen_2.start_fn = [](MM::Engine& engine) { + screen_2.start_fn = [](MM::Engine& e) { std::cout << "now in screen_2\n"; // and queue next screen immediately (for the purpose of this test) - engine.tryService()->queueChangeScreenTo("screen_end"); + e.tryService()->queueChangeScreenTo("screen_end"); }; screen_2.end_fn = [](auto&) { std::cout << "exiting screen_2\n"; @@ -170,8 +170,8 @@ TEST(SceneDirectorSimple, online) { // id end, quits the engine { auto& screen_end = sd.screens["screen_end"]; - screen_end.start_fn = [](MM::Engine& engine) { - engine.stop(); + screen_end.start_fn = [](MM::Engine& e) { + e.stop(); }; } diff --git a/framework/sdl_service/src/mm/services/sdl_service.cpp b/framework/sdl_service/src/mm/services/sdl_service.cpp index 1fd1708..3cdc680 100644 --- a/framework/sdl_service/src/mm/services/sdl_service.cpp +++ b/framework/sdl_service/src/mm/services/sdl_service.cpp @@ -61,6 +61,7 @@ SDLService::~SDLService(void) { } std::vector SDLService::registerUpdates(void) { + using namespace entt::literals; return { { "SDLService::events"_hs, diff --git a/framework/simple_scene/src/mm/services/simple_scene.cpp b/framework/simple_scene/src/mm/services/simple_scene.cpp index a3669f3..7def818 100644 --- a/framework/simple_scene/src/mm/services/simple_scene.cpp +++ b/framework/simple_scene/src/mm/services/simple_scene.cpp @@ -29,6 +29,7 @@ void SimpleSceneService::disable(Engine&) { } std::vector SimpleSceneService::registerUpdates(void) { + using namespace entt::literals; return { { "SimpleSceneService::scene_tick"_hs, diff --git a/framework/simple_sdl_renderer/src/mm/services/simple_sdl_renderer.cpp b/framework/simple_sdl_renderer/src/mm/services/simple_sdl_renderer.cpp index bc1768e..b775b33 100644 --- a/framework/simple_sdl_renderer/src/mm/services/simple_sdl_renderer.cpp +++ b/framework/simple_sdl_renderer/src/mm/services/simple_sdl_renderer.cpp @@ -58,6 +58,7 @@ void SimpleSDLRendererService::disable(Engine&) { } std::vector SimpleSDLRendererService::registerUpdates(void) { + using namespace entt::literals; return { { "SimpleSDLRendererService::render"_hs, diff --git a/framework/sound/test/loader_test.cpp b/framework/sound/test/loader_test.cpp index 1dedd47..0014c96 100644 --- a/framework/sound/test/loader_test.cpp +++ b/framework/sound/test/loader_test.cpp @@ -17,6 +17,8 @@ // inlining zip #include "res/erik_gun_fx_1.zip.h" +using namespace entt::literals; + extern char* argv0; TEST(soloud_fs_loader, basic) {