diff --git a/testbed/CMakeLists.txt b/testbed/CMakeLists.txt index 867c897f8..b5d44492b 100644 --- a/testbed/CMakeLists.txt +++ b/testbed/CMakeLists.txt @@ -48,6 +48,8 @@ target_sources( PRIVATE application/application.cpp application/context.cpp + system/imgui_system.cpp + system/rendering_system.cpp testbed.cpp ${imgui_SOURCE_DIR}/backends/imgui_impl_sdl3.cpp ${imgui_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.cpp diff --git a/testbed/application/application.cpp b/testbed/application/application.cpp index e1e619ea4..998f7d20b 100644 --- a/testbed/application/application.cpp +++ b/testbed/application/application.cpp @@ -4,23 +4,28 @@ #include #include #include +#include #include +#include +#include namespace testbed { -void application::update() { +void application::update(entt::registry ®istry) { ImGui_ImplSDLRenderer3_NewFrame(); ImGui_ImplSDL3_NewFrame(); ImGui::NewFrame(); // update... + static_cast(registry); } -void application::draw(const context &context) const { +void application::draw(entt::registry ®istry, const context &context) const { SDL_SetRenderDrawColor(context, 0u, 0u, 0u, SDL_ALPHA_OPAQUE); SDL_RenderClear(context); - // draw... + rendering_system(registry, context); + imgui_system(registry); ImGui::Render(); ImGuiIO &io = ImGui::GetIO(); @@ -59,12 +64,14 @@ application::~application() { } int application::run() { + entt::registry registry{}; context context{}; + quit = false; while(!quit) { - update(); - draw(context); + update(registry); + draw(registry, context); input(); } diff --git a/testbed/application/application.h b/testbed/application/application.h index ae81fbf70..ee5f6ae96 100644 --- a/testbed/application/application.h +++ b/testbed/application/application.h @@ -1,6 +1,7 @@ #pragma once #include +#include struct SDL_Renderer; @@ -10,8 +11,8 @@ struct config; struct context; class application { - void update(); - void draw(const context &) const; + void update(entt::registry &); + void draw(entt::registry &, const context &) const; void input(); public: diff --git a/testbed/system/imgui_system.cpp b/testbed/system/imgui_system.cpp new file mode 100644 index 000000000..680cfd530 --- /dev/null +++ b/testbed/system/imgui_system.cpp @@ -0,0 +1,16 @@ +#include +#include +#include + +namespace testbed { + +void imgui_system(entt::registry ®istry) { + ImGui::Begin("testbed"); + + // ... + static_cast(registry); + + ImGui::End(); +} + +} // namespace testbed diff --git a/testbed/system/imgui_system.h b/testbed/system/imgui_system.h new file mode 100644 index 000000000..15840161c --- /dev/null +++ b/testbed/system/imgui_system.h @@ -0,0 +1,9 @@ +#pragma once + +#include + +namespace testbed { + +void imgui_system(entt::registry &); + +} // namespace testbed diff --git a/testbed/system/rendering_system.cpp b/testbed/system/rendering_system.cpp new file mode 100644 index 000000000..a41e9b648 --- /dev/null +++ b/testbed/system/rendering_system.cpp @@ -0,0 +1,13 @@ +#include +#include +#include + +namespace testbed { + +void rendering_system(entt::registry ®istry, const context &ctx) { + // render... + static_cast(registry); + static_cast(ctx); +} + +} // namespace testbed diff --git a/testbed/system/rendering_system.h b/testbed/system/rendering_system.h new file mode 100644 index 000000000..8bf334705 --- /dev/null +++ b/testbed/system/rendering_system.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace testbed { + +struct context; + +void rendering_system(entt::registry &, const context &); + +} // namespace testbed