| 1334 | } |
| 1335 | |
| 1336 | MapExtras::Block *MapExtras::MapCache::BlockAt(DFCoord blockcoord) |
| 1337 | { |
| 1338 | if(!valid) |
| 1339 | return 0; |
| 1340 | std::map <DFCoord, Block*>::iterator iter = blocks.find(blockcoord); |
| 1341 | if(iter != blocks.end()) |
| 1342 | { |
| 1343 | return (*iter).second; |
| 1344 | } |
| 1345 | else |
| 1346 | { |
| 1347 | if(unsigned(blockcoord.x) < x_bmax && |
| 1348 | unsigned(blockcoord.y) < y_bmax && |
| 1349 | unsigned(blockcoord.z) < z_max) |
| 1350 | { |
| 1351 | Block * nblo = new Block(this, blockcoord); |
| 1352 | blocks[blockcoord] = nblo; |
| 1353 | return nblo; |
| 1354 | } |
| 1355 | return 0; |
| 1356 | } |
| 1357 | } |
| 1358 | |
| 1359 | void MapExtras::MapCache::discardBlock(Block *block) |
| 1360 | { |