renderer_bootstrap.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <memory>
  3. #include <vector>
  4. namespace Render::GL {
  5. class Renderer;
  6. class Camera;
  7. class GroundRenderer;
  8. class TerrainRenderer;
  9. class BiomeRenderer;
  10. class RiverRenderer;
  11. class RoadRenderer;
  12. class RiverbankRenderer;
  13. class BridgeRenderer;
  14. class FogRenderer;
  15. class StoneRenderer;
  16. class PlantRenderer;
  17. class PineRenderer;
  18. class OliveRenderer;
  19. class FireCampRenderer;
  20. class RainRenderer;
  21. struct IRenderPass;
  22. } // namespace Render::GL
  23. namespace Engine::Core {
  24. class World;
  25. }
  26. class RendererBootstrap {
  27. public:
  28. struct RenderingComponents {
  29. std::unique_ptr<Render::GL::Renderer> renderer;
  30. std::unique_ptr<Render::GL::Camera> camera;
  31. std::unique_ptr<Render::GL::GroundRenderer> ground;
  32. std::unique_ptr<Render::GL::TerrainRenderer> terrain;
  33. std::unique_ptr<Render::GL::BiomeRenderer> biome;
  34. std::unique_ptr<Render::GL::RiverRenderer> river;
  35. std::unique_ptr<Render::GL::RoadRenderer> road;
  36. std::unique_ptr<Render::GL::RiverbankRenderer> riverbank;
  37. std::unique_ptr<Render::GL::BridgeRenderer> bridge;
  38. std::unique_ptr<Render::GL::FogRenderer> fog;
  39. std::unique_ptr<Render::GL::StoneRenderer> stone;
  40. std::unique_ptr<Render::GL::PlantRenderer> plant;
  41. std::unique_ptr<Render::GL::PineRenderer> pine;
  42. std::unique_ptr<Render::GL::OliveRenderer> olive;
  43. std::unique_ptr<Render::GL::FireCampRenderer> firecamp;
  44. std::unique_ptr<Render::GL::RainRenderer> rain;
  45. std::vector<Render::GL::IRenderPass *> passes;
  46. };
  47. static RenderingComponents initialize_rendering();
  48. static void initialize_world_systems(Engine::Core::World &world);
  49. };