mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-13 16:45:20 +02:00
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
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
Reference in New Issue
Block a user