// // Created by sebastian on 08.02.26. // #ifndef MASTERRENDERER_H #define MASTERRENDERER_H #include #include #include "Renderer.h" #include "TerrainRenderer.h" #include "../layer/entities/Entity.h" #include "model/TexturedModel.h" class Camera; class Light; class MasterRenderer { private: std::unordered_map>> entities; std::unordered_map>> terrainTiles; glm::mat4 projectionMatrix; std::unique_ptr entityRenderer; std::unique_ptr terrainRenderer; constexpr static float FOV = 70.0f; constexpr static float NEAR_PLANE = 0.1f; constexpr static float FAR_PLANE = 1000.0f; static glm::mat4 createProjectionMatrix(); public: MasterRenderer() : projectionMatrix(createProjectionMatrix()), entityRenderer(std::make_unique(projectionMatrix)), terrainRenderer(std::make_unique(projectionMatrix)) { glEnable(GL_CULL_FACE); glCullFace(GL_BACK); }; void render(const Light &light, const Camera &camera); void submitEntity(std::unique_ptr entity); void submitTerrainTile(std::shared_ptr transform, std::shared_ptr model, std::shared_ptr); [[nodiscard]] glm::mat4 getProjectionMatrix() const {return projectionMatrix;} }; #endif //MASTERRENDERER_H