diff --git a/engines/freescape/area.cpp b/engines/freescape/area.cpp index 8575904ce01..7d9c0b9ead5 100644 --- a/engines/freescape/area.cpp +++ b/engines/freescape/area.cpp @@ -228,6 +228,7 @@ void Area::draw(Freescape::Renderer *gfx, uint32 animationTicks, Math::Vector3d ObjectArray planarObjects; ObjectArray nonPlanarObjects; Object *floor = nullptr; + Common::HashMap sizes; float offset = !gfx->_isAccelerated ? 2.0 : 1.0; for (auto &obj : _drawableObjects) { @@ -271,6 +272,12 @@ void Area::draw(Freescape::Renderer *gfx, uint32 animationTicks, Math::Vector3d if (distance.length() > 0.0001) continue; + float sizeNonPlanar = object->_boundingBox.getSize().length(); + if (sizes[planar] >= sizeNonPlanar) + continue; + + sizes[planar] = sizeNonPlanar; + if (planar->getSize().x() == 0) { if (object->getOrigin().x() >= centerPlanar.x()) offsetMap[planar] = -offset;