diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-03-29 01:22:08 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-03-29 01:22:08 +0300 |
commit | a6ca7eb29dcd729cf4ac6f1446b5b3e8589b3872 (patch) | |
tree | bd15b8a2f365b2dba4c5c84edb042a0d51113cfe /src/map.h | |
parent | 02c035c548787a589c2bb813112b080a638e2972 (diff) | |
download | minetest-a6ca7eb29dcd729cf4ac6f1446b5b3e8589b3872.tar.gz minetest-a6ca7eb29dcd729cf4ac6f1446b5b3e8589b3872.tar.bz2 minetest-a6ca7eb29dcd729cf4ac6f1446b5b3e8589b3872.zip |
Area-based MapEditEvent ignore and that put to use for on_generate too
Diffstat (limited to 'src/map.h')
-rw-r--r-- | src/map.h | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -98,6 +98,38 @@ struct MapEditEvent } return event; } + + VoxelArea getArea() + { + switch(type){ + case MEET_ADDNODE: + return VoxelArea(p); + case MEET_REMOVENODE: + return VoxelArea(p); + case MEET_BLOCK_NODE_METADATA_CHANGED: + { + v3s16 np1 = p*MAP_BLOCKSIZE; + v3s16 np2 = np1 + v3s16(1,1,1)*MAP_BLOCKSIZE - v3s16(1,1,1); + return VoxelArea(np1, np2); + } + case MEET_OTHER: + { + VoxelArea a; + for(core::map<v3s16, bool>::Iterator + i = modified_blocks.getIterator(); + i.atEnd()==false; i++) + { + v3s16 p = i.getNode()->getKey(); + v3s16 np1 = p*MAP_BLOCKSIZE; + v3s16 np2 = np1 + v3s16(1,1,1)*MAP_BLOCKSIZE - v3s16(1,1,1); + a.addPoint(np1); + a.addPoint(np2); + } + return a; + } + } + return VoxelArea(); + } }; class MapEventReceiver |