diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 7c59c90c7f..0e70f09f38 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -219,25 +219,26 @@ namespace OpenRCT2::Ui::Windows if (GameIsNotPaused() || getGameState().cheats.buildInPauseMode) { ClearProvisional(); - auto res = FindValidTrackDesignPlaceHeight(trackLoc, GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); + CoordsXYZD ghostTrackLoc = trackLoc; + auto res = FindValidTrackDesignPlaceHeight(ghostTrackLoc, GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); if (res.Error == GameActions::Status::Ok) { // Valid location found. Place the ghost at the location. - auto tdAction = GameActions::TrackDesignAction(trackLoc, *_trackDesign, !gTrackDesignSceneryToggle); + auto tdAction = GameActions::TrackDesignAction(ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle); tdAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST); tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) { if (result->Error == GameActions::Status::Ok) { _placementGhostRideId = result->GetData(); - _placementGhostLoc = trackLoc; + _placementGhostLoc = ghostTrackLoc; _hasPlacementGhost = true; } }); res = GameActions::Execute(&tdAction, getGameState()); cost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined; - VirtualFloorSetHeight(trackLoc.z); + VirtualFloorSetHeight(ghostTrackLoc.z); } }