y < y_min || y > y_max)
continue;
- if (y + getHeight() >= mg->vm->m_area.MaxEdge.Y) {
+ if (y + getHeight() > mg->vm->m_area.MaxEdge.Y) {
continue;
#if 0
printf("Decoration at (%d %d %d) cut off\n", x, y, z);
}
if (mg->biomemap) {
- std::set<u8>::iterator iter;
+ UNORDERED_SET<u8>::iterator iter;
if (!biomes.empty()) {
iter = biomes.find(mg->biomemap[mapindex]);
int DecoSchematic::getHeight()
{
- return schematic->size.Y;
+ // Account for a schematic being sunk into the ground by flag.
+ // When placed normally account for how a schematic is placed
+ // sunk 1 node into the ground.
+ return (flags & DECO_PLACE_CENTER_Y) ?
+ (schematic->size.Y - 1) / 2 : schematic->size.Y - 1;
}