#ifndef RenderQueue_h__ #define RenderQueue_h__ #include #include #include "../Common.h" #include "../GLM.h" #include "../Core/Util/Rectangle.h" #include "../Core/Entity.h" #include "Camera.h" #include "RenderJob.h" #include "ModelJob.h" #include "TextJob.h" #include "PointLightJob.h" #include "DirectionalLightJob.h" #include "ExplosionEffectJob.h" #include "SpriteJob.h" struct RenderScene { ::Camera* Camera = nullptr; struct Queues { std::list> OpaqueObjects; std::list> TransparentObjects; std::list> OpaqueShieldedObjects; std::list> ShieldObjects; std::list> SpriteJob; std::list> PointLight; std::list> Text; std::list> DirectionalLight; } Jobs; Rectangle Viewport; bool ClearDepth = false; bool ShouldBlur = false; glm::vec4 AmbientColor; void Clear() { Jobs.OpaqueObjects.clear(); Jobs.TransparentObjects.clear(); Jobs.OpaqueShieldedObjects.clear(); Jobs.ShieldObjects.clear(); Jobs.SpriteJob.clear(); Jobs.DirectionalLight.clear(); } }; struct RenderFrame { public: //TODO: Getters GLfloat Gamma = 2.2f; GLfloat Exposure = 1.f; void Add(RenderScene &scene) { RenderScenes.push_back(std::shared_ptr(new RenderScene(scene))); m_Size++; } void Clear() { RenderScenes.clear(); m_Size = 0; } int Size() const { return m_Size; } std::list>::const_iterator begin() { return RenderScenes.begin(); } std::list>::const_iterator end() { return RenderScenes.end(); } std::list> RenderScenes; private: int m_Size = 0; }; #endif