diff options
author | Mattes D <github@xoft.cz> | 2014-09-04 14:09:54 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-09-04 14:09:54 +0200 |
commit | b590eed42fe5a19acd3314610dc6e7fec3160ada (patch) | |
tree | 813d732ba13ae93b796b720a38a693ac790665f4 /src/Generating/BioGen.cpp | |
parent | Anvil: Cleanly refuse to store data that is too large. (diff) | |
parent | change to linear calculation (diff) | |
download | cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.tar cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.tar.gz cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.tar.bz2 cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.tar.lz cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.tar.xz cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.tar.zst cuberite-b590eed42fe5a19acd3314610dc6e7fec3160ada.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Generating/BioGen.cpp | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/Generating/BioGen.cpp b/src/Generating/BioGen.cpp index 8fad9f5c9..175e4ef33 100644 --- a/src/Generating/BioGen.cpp +++ b/src/Generating/BioGen.cpp @@ -151,7 +151,7 @@ void cBioGenCache::GenBiomes(int a_ChunkX, int a_ChunkZ, cChunkDef::BiomeMap & a LOGD("BioGenCache: %d hits, %d misses, saved %.2f %%", m_NumHits, m_NumMisses, 100.0 * m_NumHits / (m_NumHits + m_NumMisses)); LOGD("BioGenCache: Avg cache chain length: %.2f", (float)m_TotalChain / m_NumHits); } - + for (int i = 0; i < m_CacheSize; i++) { if ( @@ -208,6 +208,59 @@ void cBioGenCache::InitializeBiomeGen(cIniFile & a_IniFile) +//////////////////////////////////////////////////////////////////////////////// +// cBioGenMulticache: + +cBioGenMulticache::cBioGenMulticache(cBiomeGen * a_BioGenToCache, size_t a_CacheSize, size_t a_CachesLength) : + m_CachesLength(a_CachesLength) +{ + m_Caches.reserve(a_CachesLength); + for (size_t i = 0; i < a_CachesLength; i++) + { + m_Caches.push_back(new cBioGenCache(a_BioGenToCache, a_CacheSize)); + } +} + + + + + +cBioGenMulticache::~cBioGenMulticache() +{ + for (std::vector<cBiomeGen*>::iterator it = m_Caches.begin(); it != m_Caches.end(); it++) + { + delete *it; + } +} + + + + + +void cBioGenMulticache::GenBiomes(int a_ChunkX, int a_ChunkZ, cChunkDef::BiomeMap & a_BiomeMap) +{ + const size_t coefficient = 3; + const size_t cacheIdx = ((size_t)a_ChunkX + coefficient * (size_t)a_ChunkZ) % m_CachesLength; + + m_Caches[cacheIdx]->GenBiomes(a_ChunkX, a_ChunkZ, a_BiomeMap); +} + + + + + +void cBioGenMulticache::InitializeBiomeGen(cIniFile & a_IniFile) +{ + for (std::vector<cBiomeGen*>::iterator it = m_Caches.begin(); it != m_Caches.end(); it++) + { + cBiomeGen * tmp = *it; + tmp->InitializeBiomeGen(a_IniFile); + } +} + + + + //////////////////////////////////////////////////////////////////////////////// // cBiomeGenList: |