diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-08 20:00:21 +0100 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-08 20:00:21 +0100 |
commit | 7817c85e84560933a33ad86ec3f9ca3d48d327d5 (patch) | |
tree | c309b9f779ca33f01d5755222a56ffca517baef4 /src/crepe/system/RenderSystem.cpp | |
parent | 0feda3d123ff99a1b9e41837482268bebfd9140a (diff) | |
parent | ac8a58a2a16118ea4c40fcc533c3420edde45122 (diff) |
Merge branch 'niels/cleanup' of github.com:lonkaars/crepe
Diffstat (limited to 'src/crepe/system/RenderSystem.cpp')
-rw-r--r-- | src/crepe/system/RenderSystem.cpp | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 5a07cc2..849d810 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -20,7 +20,23 @@ RenderSystem & RenderSystem::get_instance() { return instance; } -void RenderSystem::update() { +void RenderSystem::clear_screen() const { SDLContext::get_instance().clear_screen(); } + +void RenderSystem::present_screen() const { + SDLContext::get_instance().present_screen(); +} +void RenderSystem::update_camera() { + ComponentManager & mgr = ComponentManager::get_instance(); + + std::vector<std::reference_wrapper<Camera>> cameras + = mgr.get_components_by_type<Camera>(); + + for (Camera & cam : cameras) { + SDLContext::get_instance().camera(cam); + this->curr_cam = &cam; + } +} +void RenderSystem::render_sprites() const { ComponentManager & mgr = ComponentManager::get_instance(); @@ -28,14 +44,15 @@ void RenderSystem::update() { = 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); - } + auto transforms = mgr.get_components_by_id<Transform>(sprite.game_object_id); + render.draw(sprite, transforms[0] , *curr_cam); } - render.present_screen(); +} + +void RenderSystem::update() { + this->clear_screen(); + this->update_camera(); + this->render_sprites(); + this->present_screen(); } |