From 32b32adffcba5b03e39fb85d5bff60c1244c0a0b Mon Sep 17 00:00:00 2001 From: mix Date: Sun, 16 Nov 2025 15:28:10 +0000 Subject: [PATCH] Prevent large scenery selected tiles invalidating every frame --- src/openrct2-ui/windows/Scenery.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index 1d9099a441..dd6050f407 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1899,18 +1899,6 @@ namespace OpenRCT2::Ui::Windows } auto* sceneryEntry = ObjectManager::GetObjectEntry(selection.EntryIndex); - MapSelection::ClearSelectedTiles(); - - for (auto& tile : sceneryEntry->tiles) - { - CoordsXY tileLocation = { tile.offset }; - auto rotatedTileCoords = tileLocation.Rotate(direction); - - rotatedTileCoords.x += mapTile.x; - rotatedTileCoords.y += mapTile.y; - - MapSelection::AddSelectedTile(rotatedTileCoords); - } gMapSelectFlags.set(MapSelectFlag::enableConstruct); @@ -1922,6 +1910,12 @@ namespace OpenRCT2::Ui::Windows return; } + MapSelection::ClearSelectedTiles(); + for (auto& tile : sceneryEntry->tiles) + { + MapSelection::AddSelectedTile(mapTile + tile.offset.Rotate(direction)); + } + SceneryRemoveGhostToolPlacement(); gSceneryPlaceObject.SceneryType = SCENERY_TYPE_LARGE;