diff options
author | Howaner <franzi.moos@googlemail.com> | 2014-09-12 19:13:46 +0200 |
---|---|---|
committer | Howaner <franzi.moos@googlemail.com> | 2014-09-12 19:13:46 +0200 |
commit | 1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f (patch) | |
tree | f7cf72e49a7ca60d10af12ad9ff70910e089b028 /src/Generating/BioGen.cpp | |
parent | Renamed SetWalkSpeed() to SetRelativeWalkSpeed() (diff) | |
parent | Fixed iron ore drop. (diff) | |
download | cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.tar cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.tar.gz cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.tar.bz2 cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.tar.lz cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.tar.xz cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.tar.zst cuberite-1223a24d3c87832c08545e6f3e8e4c51ff1e7e3f.zip |
Diffstat (limited to 'src/Generating/BioGen.cpp')
-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..60ad4e3eb 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 (cBiomeGens::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 (cBiomeGens::iterator it = m_Caches.begin(); it != m_Caches.end(); it++) + { + cBiomeGen * tmp = *it; + tmp->InitializeBiomeGen(a_IniFile); + } +} + + + + //////////////////////////////////////////////////////////////////////////////// // cBiomeGenList: |