Skip to content

Commit

Permalink
Ensure that Map::findNodesWithMetadata() reports nodes strictly withi…
Browse files Browse the repository at this point in the history
…n the node-granular area
  • Loading branch information
kwolekr committed May 8, 2015
1 parent f1ccfd3 commit ff740a4
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/map.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1898,6 +1898,8 @@ std::vector<v3s16> Map::findNodesWithMetadata(v3s16 p1, v3s16 p2)
v3s16 bpmin = getNodeBlockPos(p1);
v3s16 bpmax = getNodeBlockPos(p2);

VoxelArea area(p1, p2);

for (s16 z = bpmin.Z; z <= bpmax.Z; z++)
for (s16 y = bpmin.Y; y <= bpmax.Y; y++)
for (s16 x = bpmin.X; x <= bpmax.X; x++) {
Expand All @@ -1917,8 +1919,13 @@ std::vector<v3s16> Map::findNodesWithMetadata(v3s16 p1, v3s16 p2)

v3s16 p_base = blockpos * MAP_BLOCKSIZE;
std::vector<v3s16> keys = block->m_node_metadata.getAllKeys();
for (size_t i = 0; i != keys.size(); i++)
positions_with_meta.push_back(keys[i] + p_base);
for (size_t i = 0; i != keys.size(); i++) {
v3s16 p(keys[i] + p_base);
if (!area.contains(p))
continue;

positions_with_meta.push_back(p);
}
}

return positions_with_meta;
Expand Down

0 comments on commit ff740a4

Please sign in to comment.