From 4c73347244a51bdd3f25e751afe641664e56ca3f Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sat, 23 Feb 2019 15:37:53 -0500 Subject: Entities to be rendered are sorted by render layer Partially just for fun. --- src/renderer.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'src/renderer.cpp') diff --git a/src/renderer.cpp b/src/renderer.cpp index 0feee50..5580073 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -2,6 +2,7 @@ #include "simulation.h" #include "consts.h" #include "level.h" +#include "views.h" Renderer::Renderer() { @@ -76,19 +77,28 @@ void Renderer::render(const Simulation& sim) } } - for (const Entity& entity : sim.getActive() | sim.entityView()) - { - SDL_SetRenderDrawColor(ren_.get(), entity.colorVal, entity.colorVal, 65, 255); + constexpr Layer renderOrder[] = { Layer::track, Layer::object }; - SDL_Rect rect { - static_cast(entity.pos.x()), - static_cast(entity.pos.y()), - static_cast(entity.size.w()), - static_cast(entity.size.h()) - }; + ranges::for_each( + ranges::view::for_each( + renderOrder, + [&] (Layer layer) { + return sim.getActive() | + sim.entityView() | + views::isOnLayer(layer); + }), + [&] (const Entity& entity) { + SDL_SetRenderDrawColor(ren_.get(), entity.colorVal, entity.colorVal, 65, 255); - SDL_RenderFillRect(ren_.get(), &rect); - } + SDL_Rect rect { + static_cast(entity.pos.x()), + static_cast(entity.pos.y()), + static_cast(entity.size.w()), + static_cast(entity.size.h()) + }; + + SDL_RenderFillRect(ren_.get(), &rect); + }); //SDL_RenderCopy(ren_.get(), canvas.get(), nullptr, nullptr); SDL_RenderPresent(ren_.get()); -- cgit 1.4.1