summaryrefslogtreecommitdiff
path: root/src/nodemetadata.h
diff options
context:
space:
mode:
authorSmallJoker <SmallJoker@users.noreply.github.com>2018-12-04 20:37:48 +0100
committerGitHub <noreply@github.com>2018-12-04 20:37:48 +0100
commit3d66622772e66154b7624957a27f9be54c4c7c28 (patch)
tree7ff32e791a39d302f6d1306089b95cb23ebba838 /src/nodemetadata.h
parentae8d14b009650f0fe019301123793312406556e4 (diff)
downloadminetest-3d66622772e66154b7624957a27f9be54c4c7c28.tar.gz
minetest-3d66622772e66154b7624957a27f9be54c4c7c28.tar.bz2
minetest-3d66622772e66154b7624957a27f9be54c4c7c28.zip
Send only changed node metadata to clients instead of whole mapblock (#5268)
Includes newer style changes and fixes by est31 Improve the block position de-serialization Add type NodeMetadataMap
Diffstat (limited to 'src/nodemetadata.h')
-rw-r--r--src/nodemetadata.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/nodemetadata.h b/src/nodemetadata.h
index 40f6dec65..c028caf88 100644
--- a/src/nodemetadata.h
+++ b/src/nodemetadata.h
@@ -70,13 +70,21 @@ private:
List of metadata of all the nodes of a block
*/
+typedef std::map<v3s16, NodeMetadata *> NodeMetadataMap;
+
class NodeMetadataList
{
public:
+ NodeMetadataList(bool is_metadata_owner = true) :
+ m_is_metadata_owner(is_metadata_owner)
+ {}
+
~NodeMetadataList();
- void serialize(std::ostream &os, u8 blockver, bool disk=true) const;
- void deSerialize(std::istream &is, IItemDefManager *item_def_mgr);
+ void serialize(std::ostream &os, u8 blockver, bool disk = true,
+ bool absolute_pos = false) const;
+ void deSerialize(std::istream &is, IItemDefManager *item_def_mgr,
+ bool absolute_pos = false);
// Add all keys in this list to the vector keys
std::vector<v3s16> getAllKeys();
@@ -89,8 +97,21 @@ public:
// Deletes all
void clear();
+ size_t size() const { return m_data.size(); }
+
+ NodeMetadataMap::const_iterator begin()
+ {
+ return m_data.begin();
+ }
+
+ NodeMetadataMap::const_iterator end()
+ {
+ return m_data.end();
+ }
+
private:
int countNonEmpty() const;
- std::map<v3s16, NodeMetadata *> m_data;
+ bool m_is_metadata_owner;
+ NodeMetadataMap m_data;
};