1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-02 16:38:41 +00:00

Minor improvements to metadata handling

This commit is contained in:
sfan5 2024-09-25 23:24:30 +02:00
parent 610ddaba7c
commit 700fbc803d
6 changed files with 31 additions and 29 deletions

View file

@ -62,14 +62,14 @@ void NodeMetadata::serialize(std::ostream &os, u8 version, bool disk) const
void NodeMetadata::deSerialize(std::istream &is, u8 version)
{
clear();
int num_vars = readU32(is);
for(int i=0; i<num_vars; i++){
u32 num_vars = readU32(is);
for (u32 i = 0; i < num_vars; i++){
std::string name = deSerializeString16(is);
std::string var = deSerializeString32(is);
m_stringvars[name] = var;
m_stringvars[name] = std::move(var);
if (version >= 2) {
if (readU8(is) == 1)
markPrivate(name, true);
m_privatevars.insert(name);
}
}
@ -89,12 +89,12 @@ bool NodeMetadata::empty() const
}
void NodeMetadata::markPrivate(const std::string &name, bool set)
bool NodeMetadata::markPrivate(const std::string &name, bool set)
{
if (set)
m_privatevars.insert(name);
return m_privatevars.insert(name).second;
else
m_privatevars.erase(name);
return m_privatevars.erase(name) > 0;
}
int NodeMetadata::countNonPrivate() const
@ -144,6 +144,8 @@ void NodeMetadataList::serialize(std::ostream &os, u8 blockver, bool disk,
writeS16(os, p.Z);
} else {
// Serialize positions within a mapblock
static_assert(MAP_BLOCKSIZE * MAP_BLOCKSIZE * MAP_BLOCKSIZE <= U16_MAX,
"position too big to serialize");
u16 p16 = (p.Z * MAP_BLOCKSIZE + p.Y) * MAP_BLOCKSIZE + p.X;
writeU16(os, p16);
}
@ -246,8 +248,7 @@ void NodeMetadataList::set(v3s16 p, NodeMetadata *d)
void NodeMetadataList::clear()
{
if (m_is_metadata_owner) {
NodeMetadataMap::const_iterator it;
for (it = m_data.begin(); it != m_data.end(); ++it)
for (auto it = m_data.begin(); it != m_data.end(); ++it)
delete it->second;
}
m_data.clear();