diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index 0449ebc999..0c3735357b 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -471,9 +471,7 @@ static int32_t window_track_place_get_base_z(const CoordsXY& loc) if (surfaceElement->GetWaterHeight() > 0) z = std::max(z, surfaceElement->GetWaterHeight()); - return z - + place_virtual_track( - _trackDesign.get(), PTD_OPERATION_GET_PLACE_Z, true, GetOrAllocateRide(PreviewRideId), { loc, z }); + return z + TrackDesignGetZPlacement(_trackDesign.get(), GetOrAllocateRide(PreviewRideId), { loc, z }); } /** diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index c6bc9d40c1..e2c47ec7f2 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -1965,6 +1965,12 @@ money32 place_virtual_track(TrackDesign* td6, uint8_t ptdOperation, bool placeSc return place_virtual_track(tds, td6, ptdOperation, placeScenery, ride, coords); } +int32_t TrackDesignGetZPlacement(TrackDesign* td6, Ride* ride, const CoordsXYZ& coords) +{ + TrackDesignState tds{}; + return place_virtual_track(tds, td6, PTD_OPERATION_GET_PLACE_Z, true, ride, coords); +} + static money32 TrackDesignCreateRide(int32_t type, int32_t subType, int32_t flags, ride_id_t* outRideIndex) { // Don't set colours as will be set correctly later. diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 28dbaf2aa7..1481e45603 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -225,6 +225,7 @@ extern ride_id_t gTrackDesignSaveRideIndex; void TrackDesignMirror(TrackDesign* td6); money32 place_virtual_track(TrackDesign* td6, uint8_t ptdOperation, bool placeScenery, Ride* ride, const CoordsXYZ& coords); +int32_t TrackDesignGetZPlacement(TrackDesign* td6, Ride* ride, const CoordsXYZ& coords); /////////////////////////////////////////////////////////////////////////////// // Track design preview