]> git.lizzy.rs Git - minetest.git/blobdiff - src/map.h
Store `MapEditEvent` blocks in a vector (#13071)
[minetest.git] / src / map.h
index e049588713fcaacff9b32745a72d1a0c09b4b682..9a9586fc6a33a334588b6cff7aa1c22de7061591 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -74,7 +74,7 @@ struct MapEditEvent
        MapEditEventType type = MEET_OTHER;
        v3s16 p;
        MapNode n = CONTENT_AIR;
-       std::set<v3s16> modified_blocks;
+       std::vector<v3s16> modified_blocks; // Represents a set
        bool is_private_change = false;
 
        MapEditEvent() = default;
@@ -82,8 +82,17 @@ struct MapEditEvent
        // Sets the event's position and marks the block as modified.
        void setPositionModified(v3s16 pos)
        {
+               assert(modified_blocks.empty()); // only meant for initialization (once)
                p = pos;
-               modified_blocks.insert(getNodeBlockPos(pos));
+               modified_blocks.push_back(getNodeBlockPos(pos));
+       }
+
+       void setModifiedBlocks(const std::map<v3s16, MapBlock *> blocks)
+       {
+               assert(modified_blocks.empty()); // only meant for initialization (once)
+               modified_blocks.reserve(blocks.size());
+               for (const auto &block : blocks)
+                       modified_blocks.push_back(block.first);
        }
 
        VoxelArea getArea() const