diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-04-26 00:23:38 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-04-26 00:23:38 +0300 |
commit | 28300953667b6a44efb5be6b2c612993de060636 (patch) | |
tree | 86b6a28085e34218ebe8d552f7993694a55366f2 /src/map.h | |
parent | 42fb1ba676de762b033b943c4a2d82db6229d245 (diff) | |
download | minetest-28300953667b6a44efb5be6b2c612993de060636.tar.gz minetest-28300953667b6a44efb5be6b2c612993de060636.tar.bz2 minetest-28300953667b6a44efb5be6b2c612993de060636.zip |
Optimized map saving and sending (server-side)
Diffstat (limited to 'src/map.h')
-rw-r--r-- | src/map.h | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -401,6 +401,35 @@ public: } return true; } + + /* + Returns true if any chunk is marked as modified + */ + bool anyChunkModified() + { + for(core::map<v2s16, MapChunk*>::Iterator + i = m_chunks.getIterator(); + i.atEnd()==false; i++) + { + v2s16 p = i.getNode()->getKey(); + MapChunk *chunk = i.getNode()->getValue(); + if(chunk->isModified()) + return true; + } + return false; + } + + void setChunksNonModified() + { + for(core::map<v2s16, MapChunk*>::Iterator + i = m_chunks.getIterator(); + i.atEnd()==false; i++) + { + v2s16 p = i.getNode()->getKey(); + MapChunk *chunk = i.getNode()->getValue(); + chunk->setModified(false); + } + } /* Chunks are generated by using these and makeChunk(). @@ -573,6 +602,12 @@ private: s16 m_chunksize; // Chunks core::map<v2s16, MapChunk*> m_chunks; + + /* + Metadata is re-written on disk only if this is true. + This is reset to false when written on disk. + */ + bool m_map_metadata_changed; }; /* |