diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-24 10:52:21 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-24 10:52:21 +0200 |
commit | 39054829fa69bcfa2b468015dc3852a2f8deac9f (patch) | |
tree | e7726d90fb3c23a15919360dd10bdf709e7e087a /src/crepe/RenderSystem.cpp | |
parent | dd9940720cde6975f79d65e08075687c47f0aec6 (diff) | |
parent | 5447ddd896eb49ea9fd9f9191a277fd1d5730aa3 (diff) |
merge master into loek/config
Diffstat (limited to 'src/crepe/RenderSystem.cpp')
-rw-r--r-- | src/crepe/RenderSystem.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/crepe/RenderSystem.cpp b/src/crepe/RenderSystem.cpp new file mode 100644 index 0000000..fae93f0 --- /dev/null +++ b/src/crepe/RenderSystem.cpp @@ -0,0 +1,42 @@ +#include <functional> +#include <vector> + +#include "api/Sprite.h" +#include "api/Transform.h" +#include "util/log.h" + +#include "ComponentManager.h" +#include "RenderSystem.h" +#include "SDLContext.h" + +using namespace crepe; +using namespace crepe::api; + +RenderSystem::RenderSystem() { dbg_trace(); } + +RenderSystem::~RenderSystem() { dbg_trace(); } + +RenderSystem & RenderSystem::get_instance() { + static RenderSystem instance; + return instance; +} + +void RenderSystem::update() { + + ComponentManager & mgr = ComponentManager::get_instance(); + + std::vector<std::reference_wrapper<Sprite>> sprites + = mgr.get_components_by_type<Sprite>(); + + SDLContext & render = SDLContext::get_instance(); + render.clear_screen(); + + for (const Sprite & sprite : sprites) { + std::vector<std::reference_wrapper<Transform>> transforms + = mgr.get_components_by_id<Transform>(sprite.game_object_id); + for (const Transform & transform : transforms) { + render.draw(sprite, transform); + } + } + render.present_screen(); +} |