#ifndef WORLD_H #define WORLD_H #include #include #include #include class World { public: World(Scop::Scene& scene); [[nodiscard]] inline Scop::Scene& GetScene() noexcept { return m_scene; } [[nodiscard]] inline std::shared_ptr GetBlockMaterial() const { return p_block_material; } [[nodiscard]] Scop::NonOwningPtr GetChunk(Scop::Vec2i position); ~World() = default; private: void GenerateWorld(); private: static constexpr std::uint8_t RENDER_DISTANCE = 2; std::unordered_map m_chunks; std::shared_ptr p_block_material; Scop::Narrator& m_narrator; Scop::Scene& m_scene; Scop::Vec2i m_previous_chunk_position; }; #endif