#include #include #include #include #include #include #include #include #include #include #include #include #include static char* argv0; TEST(imgui_text_edit, it) { MM::Engine engine; auto& sdl_ss = engine.addService(SDL_INIT_VIDEO); ASSERT_TRUE(engine.enableService()); sdl_ss.createGLWindow("imgui_text_edit_test", 1280, 720); engine.addService(argv0, "imgui_text_edit_test"); ASSERT_TRUE(engine.enableService()); engine.addService(); ASSERT_TRUE(engine.enableService()); bool provide_ret = engine.provide(); ASSERT_TRUE(provide_ret); engine.addService(); ASSERT_TRUE(engine.enableService()); engine.addService(); auto& rs = engine.addService(); ASSERT_TRUE(engine.enableService()); rs.addRenderTask(engine); ASSERT_TRUE(engine.enableService()); MM::ImGuiSimpleFPSOverlay fps_overlay; engine.addUpdate([&](MM::Engine&) { fps_overlay.renderImGui(); } ); MM::FileTextEditor fte{engine}; engine.addUpdate([&](MM::Engine&) { fte.renderImGui(); } ); engine.run(); // TODO: clear asset manager sdl_ss.destroyWindow(); } TEST(imgui_text_edit, shader) { MM::Engine engine; auto& sdl_ss = engine.addService(SDL_INIT_VIDEO); ASSERT_TRUE(engine.enableService()); sdl_ss.createGLWindow("imgui_text_edit_test", 1280, 720); engine.addService(argv0, "imgui_text_edit_test"); ASSERT_TRUE(engine.enableService()); engine.addService(); ASSERT_TRUE(engine.enableService()); bool provide_ret = engine.provide(); ASSERT_TRUE(provide_ret); engine.addService(); ASSERT_TRUE(engine.enableService()); engine.addService(); auto& rs = engine.addService(); ASSERT_TRUE(engine.enableService()); rs.addRenderTask(engine); ASSERT_TRUE(engine.enableService()); MM::ImGuiSimpleFPSOverlay fps_overlay; engine.addUpdate([&](MM::Engine&) { fps_overlay.renderImGui(); } ); //auto& rc = engine.getScene().ctx(); //rc.registerRenderer(); MM::FileTextEditor fte{engine}; engine.addUpdate([&](MM::Engine&) { fte.renderImGui(); } ); MM::FileShaderEditor fse{engine}; engine.addUpdate([&](MM::Engine&) { fse.renderImGui(); } ); fte.open("shader/quad_renderer/vert.glsl"); fse.open("shader/quad_renderer/frag.glsl"); // TODO: a shader to display plx //{ //auto& ecs = engine.getScene(); //auto& ee = igsts->getEntityEditor(); //ee.registerTrivial("QuadRenderable"); //ee.registerComponentCreateFn(ecs.type(), //[](MM::EngineConfig::ECS& ecs, MM::EngineConfig::Entity e) { //auto& r = ecs.assign(e); //r._texture = MM::ResourceManager::ref().get("default"_hs); //} //); //ee.registerComponentWidgetFn(ecs.type(), //[](MM::EngineConfig::ECS& ecs, MM::EngineConfig::Entity e) { //auto& r = ecs.get(e); //MM::ImGuiWidgets::Components::QuadRenderable(r); //} //); //} engine.run(); // TODO: clear asset manager sdl_ss.destroyWindow(); } int main(int argc, char** argv) { argv0 = argv[0]; ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }