summaryrefslogtreecommitdiff
path: root/terrain_cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'terrain_cache.cpp')
-rw-r--r--terrain_cache.cpp57
1 files changed, 0 insertions, 57 deletions
diff --git a/terrain_cache.cpp b/terrain_cache.cpp
deleted file mode 100644
index c40a1d6..0000000
--- a/terrain_cache.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "terrain_cache.h"
-
-/* TerrainCacheObject */
-
-TerrainCacheObject::TerrainCacheObject(TerrainCache *cache, int x, int y, int width, int height) {
- this->cache = cache;
- this->x = x;
- this->y = y;
- this->width = width;
- this->height = height;
- this->heights = cache->tl->get_chunk(x, y, width, height);
-}
-
-TerrainCacheObject::~TerrainCacheObject() {
- cache->tl->save_chunk(heights, x, y, width, height);
- delete[] heights;
-}
-
-/* TerrainCache */
-
-TerrainCache::TerrainCache(int seed, fs::path root, size_t max_size) {
- this->max_size = max_size;
- tl = new TerrainLoader(seed, root);
-}
-
-TerrainCache::~TerrainCache() {
- caches.clear();
- delete tl;
-}
-
-TerrainCacheObject::p TerrainCache::make_object(int x, int y, int width, int height) {
- TerrainCacheObject::p ob(new TerrainCacheObject(this, x, y, width, height));
-
- if(caches.size() >= max_size) {
- for(cache_map::iterator it = caches.begin(); it != caches.end(); it++) {
- if(it->second.use_count() == 1) {
- caches.erase(it);
- break;
- }
- }
- }
-
- caches.insert(std::pair<intpair, TerrainCacheObject::p>(intpair(x, y), ob));
- return ob;
-}
-
-TerrainCacheObject::p TerrainCache::get_chunk(int x, int y, int width, int height) {
- cache_map::iterator it = caches.find(intpair(x, y));
- if(it != caches.end())
- return it->second;
-
- return make_object(x, y, width, height);
-}
-
-size_t TerrainCache::get_size() {
- return caches.size();
-}