#pragma once #include #include namespace Render::GL { class Renderer; class Camera; class GroundRenderer; class TerrainRenderer; class BiomeRenderer; class RiverRenderer; class RoadRenderer; class RiverbankRenderer; class BridgeRenderer; class FogRenderer; class StoneRenderer; class PlantRenderer; class PineRenderer; class OliveRenderer; class FireCampRenderer; class RainRenderer; struct IRenderPass; } // namespace Render::GL namespace Engine::Core { class World; } class RendererBootstrap { public: struct RenderingComponents { std::unique_ptr renderer; std::unique_ptr camera; std::unique_ptr ground; std::unique_ptr terrain; std::unique_ptr biome; std::unique_ptr river; std::unique_ptr road; std::unique_ptr riverbank; std::unique_ptr bridge; std::unique_ptr fog; std::unique_ptr stone; std::unique_ptr plant; std::unique_ptr pine; std::unique_ptr olive; std::unique_ptr firecamp; std::unique_ptr rain; std::vector passes; }; static RenderingComponents initialize_rendering(); static void initialize_world_systems(Engine::Core::World &world); };