diff --git a/src/client.cpp b/src/client.cpp index 69c91bc30947d161bfc9cbcd7725cca52b203b29..80d7febe66b076b13444f5d0eac4316c9c178c10 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -31,6 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "settings.h" #include "profiler.h" #include "log.h" +#include "nodemetadata.h" /* QueuedMeshUpdate diff --git a/src/environment.cpp b/src/environment.cpp index 50c5a4b816b7e7c16e9696bd4387e3b9b8f82cb3..d9f24ede90aad05e7e5683fb09a4a30cffe41a82 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -31,6 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "profiler.h" #include "scriptapi.h" #include "mapnode_contentfeatures.h" +#include "nodemetadata.h" #define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")" @@ -607,7 +608,7 @@ void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime) activateObjects(block); // Run node metadata - bool changed = block->m_node_metadata.step((float)dtime_s); + bool changed = block->m_node_metadata->step((float)dtime_s); if(changed) { MapEditEvent event; @@ -917,7 +918,7 @@ void ServerEnvironment::step(float dtime) block->setTimestampNoChangedFlag(m_game_time); // Run node metadata - bool changed = block->m_node_metadata.step(dtime); + bool changed = block->m_node_metadata->step(dtime); if(changed) { MapEditEvent event; diff --git a/src/game.cpp b/src/game.cpp index 638ad91556226d0aefe3abf25a46adf093328d61..bd84593b8d94a786088bd83e4faa2f2b28f7a6b9 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -45,6 +45,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "filesys.h" // Needed for determining pointing to nodes #include "mapnode_contentfeatures.h" +#include "nodemetadata.h" /* Setting this to 1 enables a special camera mode that forces diff --git a/src/map.cpp b/src/map.cpp index 858c08b63705d4f3ca3414960e2649767ee85176..b70b76b71ef2efa24a5b3666cc12a646ad9d88d9 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1836,7 +1836,7 @@ NodeMetadata* Map::getNodeMetadata(v3s16 p) <<std::endl; return NULL; } - NodeMetadata *meta = block->m_node_metadata.get(p_rel); + NodeMetadata *meta = block->m_node_metadata->get(p_rel); return meta; } @@ -1856,7 +1856,7 @@ void Map::setNodeMetadata(v3s16 p, NodeMetadata *meta) <<std::endl; return; } - block->m_node_metadata.set(p_rel, meta); + block->m_node_metadata->set(p_rel, meta); } void Map::removeNodeMetadata(v3s16 p) @@ -1870,7 +1870,7 @@ void Map::removeNodeMetadata(v3s16 p) <<std::endl; return; } - block->m_node_metadata.remove(p_rel); + block->m_node_metadata->remove(p_rel); } void Map::nodeMetadataStep(float dtime, @@ -1895,7 +1895,7 @@ void Map::nodeMetadataStep(float dtime, for(i=sectorblocks.begin(); i!=sectorblocks.end(); i++) { MapBlock *block = *i; - bool changed = block->m_node_metadata.step(dtime); + bool changed = block->m_node_metadata->step(dtime); if(changed) changed_blocks[block->getPos()] = block; } diff --git a/src/mapblock.cpp b/src/mapblock.cpp index 85cd7e45ec9b297d2d69f1e692061a44c880bcee..012cbd4d10dd4797f9c13873bc53190db2de95c9 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -24,12 +24,14 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "light.h" #include <sstream> #include "mapnode_contentfeatures.h" +#include "nodemetadata.h" /* MapBlock */ MapBlock::MapBlock(Map *parent, v3s16 pos, bool dummy): + m_node_metadata(new NodeMetadataList), m_parent(parent), m_pos(pos), m_modified(MOD_STATE_WRITE_NEEDED), @@ -44,8 +46,6 @@ MapBlock::MapBlock(Map *parent, v3s16 pos, bool dummy): if(dummy == false) reallocate(); - //m_spawn_timer = -10000; - #ifndef SERVER m_mesh_expired = false; mesh_mutex.Init(); @@ -68,6 +68,8 @@ MapBlock::~MapBlock() } #endif + delete m_node_metadata; + if(data) delete[] data; } @@ -632,7 +634,7 @@ void MapBlock::serialize(std::ostream &os, u8 version) { try{ std::ostringstream oss(std::ios_base::binary); - m_node_metadata.serialize(oss); + m_node_metadata->serialize(oss); os<<serializeString(oss.str()); } // This will happen if the string is longer than 65535 @@ -645,7 +647,7 @@ void MapBlock::serialize(std::ostream &os, u8 version) else { std::ostringstream oss(std::ios_base::binary); - m_node_metadata.serialize(oss); + m_node_metadata->serialize(oss); compressZlib(oss.str(), os); //os<<serializeLongString(oss.str()); } @@ -784,7 +786,7 @@ void MapBlock::deSerialize(std::istream &is, u8 version) { std::string data = deSerializeString(is); std::istringstream iss(data, std::ios_base::binary); - m_node_metadata.deSerialize(iss); + m_node_metadata->deSerialize(iss); } else { @@ -792,7 +794,7 @@ void MapBlock::deSerialize(std::istream &is, u8 version) std::ostringstream oss(std::ios_base::binary); decompressZlib(is, oss); std::istringstream iss(oss.str(), std::ios_base::binary); - m_node_metadata.deSerialize(iss); + m_node_metadata->deSerialize(iss); } } catch(SerializationError &e) diff --git a/src/mapblock.h b/src/mapblock.h index 22b3b7db6189d986c947d9ac50c393f4f53fe909..18b679cfc9fcee0bc426f26094de2fe1abea5482 100644 --- a/src/mapblock.h +++ b/src/mapblock.h @@ -30,7 +30,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "serialization.h" #include "constants.h" #include "voxel.h" -#include "nodemetadata.h" #include "staticobject.h" #include "mapblock_nodemod.h" #ifndef SERVER @@ -38,6 +37,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #endif class Map; +class NodeMetadataList; #define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff @@ -575,7 +575,7 @@ class MapBlock /*: public NodeContainer*/ JMutex mesh_mutex; #endif - NodeMetadataList m_node_metadata; + NodeMetadataList *m_node_metadata; StaticObjectList m_static_objects; private: