#pragma once #include #include #include #include #include "typedefs.hpp" class Content; class World; class Entities; class Inventories; class LevelEvents; class PhysicsSolver; class GlobalChunks; class Camera; class Players; struct EngineSettings; /// @brief A level, contains chunks and objects class Level { const EngineSettings& settings; std::unique_ptr world; public: const Content& content; std::unique_ptr chunks; std::unique_ptr inventories; std::unique_ptr physics; std::unique_ptr events; std::unique_ptr entities; std::unique_ptr players; std::vector> cameras; // move somewhere? Level( std::unique_ptr world, const Content& content, EngineSettings& settings ); ~Level(); World* getWorld(); const World* getWorld() const; void onSave(); std::shared_ptr getCamera(const std::string& name); };