Godzil 3 år sedan
förälder
incheckning
3f1a9cdd21
1 ändrade filer med 22 tillägg och 3 borttagningar
  1. 22 3
      source/include/Systems/Render.h

+ 22 - 3
source/include/Systems/Render.h

@@ -28,10 +28,29 @@ public:
 
     void update(SDL_Renderer *renderer, std::unique_ptr<AssetStore> &assetStore)
     {
-        for (auto entity: this->getSystemEntities())
+        struct RenderableEntity
         {
-            const auto transform = entity.getComponent<TransformComponent>();
-            const auto sprite = entity.getComponent<SpriteComponent>();
+            TransformComponent transformComponent;
+            SpriteComponent spriteComponent;
+        };
+        std::vector<RenderableEntity> renderableEntities;
+        for(auto entity: this->getSystemEntities())
+        {
+            RenderableEntity renderableEntity;
+            renderableEntity.spriteComponent = entity.getComponent<SpriteComponent>();
+            renderableEntity.transformComponent = entity.getComponent<TransformComponent>();
+            renderableEntities.emplace_back(renderableEntity);
+        }
+
+        std::sort(renderableEntities.begin(), renderableEntities.end(), [](const RenderableEntity &a, const RenderableEntity &b)
+        {
+           return a.spriteComponent.zIndex < b.spriteComponent.zIndex;
+        });
+
+        for(auto entity: renderableEntities)
+        {
+            const auto transform = entity.transformComponent;
+            const auto sprite = entity.spriteComponent;
 
             SDL_Texture *texture = assetStore->getTexture(sprite.assetId);
             SDL_Rect destRect =