diff options
author | est31 <MTest31@outlook.com> | 2015-05-31 06:23:10 +0200 |
---|---|---|
committer | est31 <MTest31@outlook.com> | 2015-05-31 06:24:41 +0200 |
commit | 06a2eee692e0e55c1dfb9f14e982ad146ba4ce49 (patch) | |
tree | 4e6f7cede27c7d1348f4e669636e7196c8240746 | |
parent | b4dfaa3a7a9251cdb0f0867fc29240c808268b1b (diff) | |
download | minetest-06a2eee692e0e55c1dfb9f14e982ad146ba4ce49.tar.gz minetest-06a2eee692e0e55c1dfb9f14e982ad146ba4ce49.tar.bz2 minetest-06a2eee692e0e55c1dfb9f14e982ad146ba4ce49.zip |
Mapblock: nodecount refactor
Spare direct multoplication, use constant MapBlock::nodecount instead of
local nodecount variables.
Also use strides at one place instead of multiplications.
-rw-r--r-- | src/mapblock.cpp | 16 | ||||
-rw-r--r-- | src/mapblock.h | 9 |
2 files changed, 10 insertions, 15 deletions
diff --git a/src/mapblock.cpp b/src/mapblock.cpp index 7ad67c589..9eb64a76e 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -132,7 +132,7 @@ MapNode MapBlock::getNodeParent(v3s16 p, bool *is_valid_position) } if (is_valid_position) *is_valid_position = true; - return data[p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X]; + return data[p.Z * zstride + p.Y * ystride + p.X]; } std::string MapBlock::getModifiedReasonString() @@ -388,7 +388,7 @@ void MapBlock::actuallyUpdateDayNightDiff() /* Check if any lighting value differs */ - for (u32 i = 0; i < MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++) { + for (u32 i = 0; i < nodecount; i++) { MapNode &n = data[i]; differs = !n.isLightDayNightEq(nodemgr); @@ -402,7 +402,7 @@ void MapBlock::actuallyUpdateDayNightDiff() */ if (differs) { bool only_air = true; - for (u32 i = 0; i < MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++) { + for (u32 i = 0; i < nodecount; i++) { MapNode &n = data[i]; if (n.getContent() != CONTENT_AIR) { only_air = false; @@ -473,8 +473,7 @@ static void getBlockNodeIdMapping(NameIdMapping *nimap, MapNode *nodes, std::set<content_t> unknown_contents; content_t id_counter = 0; - for(u32 i=0; i<MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++) - { + for (u32 i = 0; i < MapBlock::nodecount; i++) { content_t global_id = nodes[i].getContent(); content_t id = CONTENT_IGNORE; @@ -519,8 +518,7 @@ static void correctBlockNodeIds(const NameIdMapping *nimap, MapNode *nodes, // correct ids. std::set<content_t> unnamed_contents; std::set<std::string> unallocatable_contents; - for(u32 i=0; i<MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; i++) - { + for (u32 i = 0; i < MapBlock::nodecount; i++) { content_t local_id = nodes[i].getContent(); std::string name; bool found = nimap->getName(local_id, name); @@ -583,7 +581,6 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk) Bulk node data */ NameIdMapping nimap; - u32 nodecount = MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; if(disk) { MapNode *tmp_nodes = new MapNode[nodecount]; @@ -683,7 +680,6 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk) */ TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos()) <<": Bulk node data"<<std::endl); - u32 nodecount = MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; u8 content_width = readU8(is); u8 params_width = readU8(is); if(content_width != 1 && content_width != 2) @@ -786,8 +782,6 @@ void MapBlock::deSerializeNetworkSpecific(std::istream &is) void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk) { - u32 nodecount = MAP_BLOCKSIZE*MAP_BLOCKSIZE*MAP_BLOCKSIZE; - // Initialize default flags is_underground = false; m_day_night_differs = false; diff --git a/src/mapblock.h b/src/mapblock.h index 9e36fe113..92ca4b485 100644 --- a/src/mapblock.h +++ b/src/mapblock.h @@ -145,9 +145,8 @@ public: void reallocate() { delete[] data; - u32 datasize = MAP_BLOCKSIZE * MAP_BLOCKSIZE * MAP_BLOCKSIZE; - data = new MapNode[datasize]; - for (u32 i = 0; i < datasize; i++) + data = new MapNode[nodecount]; + for (u32 i = 0; i < nodecount; i++) data[i] = MapNode(CONTENT_IGNORE); raiseModified(MOD_STATE_WRITE_NEEDED, MOD_REASON_REALLOCATE); @@ -294,7 +293,7 @@ public: if (!*valid_position) return MapNode(CONTENT_IGNORE); - return data[z * MAP_BLOCKSIZE * MAP_BLOCKSIZE + y * MAP_BLOCKSIZE + x]; + return data[z * zstride + y * ystride + x]; } inline MapNode getNode(v3s16 p, bool *valid_position) @@ -553,6 +552,8 @@ public: static const u32 ystride = MAP_BLOCKSIZE; static const u32 zstride = MAP_BLOCKSIZE * MAP_BLOCKSIZE; + static const u32 nodecount = MAP_BLOCKSIZE * MAP_BLOCKSIZE * MAP_BLOCKSIZE; + private: /* Private member variables |