#ifndef STAR_WORM_CAVE_HPP #define STAR_WORM_CAVE_HPP #include "StarTerrainDatabase.hpp" #include "StarLruCache.hpp" #include "StarVector.hpp" namespace Star { class WormCaveSector { public: WormCaveSector(int sectorSize, Vec2I sector, Json const& config, size_t seed, float commonality); float get(int x, int y); private: bool inside(int x, int y); void set(int x, int y, float value); int m_sectorSize; Vec2I m_sector; List m_values; float m_maxValue; }; class WormCaveSelector : public TerrainSelector { public: static char const* const Name; WormCaveSelector(Json const& config, TerrainSelectorParameters const& parameters); float get(int x, int y) const override; private: int m_sectorSize; mutable HashLruCache m_cache; }; } #endif