Store SurfaceElement directly in PaintSessionCore

This commit is contained in:
Hielke Morsink 2023-04-08 21:57:25 +02:00 committed by GitHub
parent af9aa82e3b
commit 417f1048e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 5 deletions

View File

@ -22,6 +22,7 @@
struct EntityBase;
struct TileElement;
struct SurfaceElement;
enum class RailingEntrySupportType : uint8_t;
enum class ViewportInteractionItem : uint8_t;
@ -187,7 +188,7 @@ struct PaintSessionCore
PaintStringStruct* PSStringHead;
PaintStringStruct* LastPSString;
AttachedPaintStruct* LastAttachedPS;
const TileElement* SurfaceElement;
const SurfaceElement* Surface;
EntityBase* CurrentlyDrawnEntity;
TileElement* CurrentlyDrawnTileElement;
const TileElement* PathElementOnSameHeight;

View File

@ -167,7 +167,7 @@ PaintSession* Painter::CreateSession(DrawPixelInfo* dpi, uint32_t viewFlags)
session->WoodenSupportsPrependTo = nullptr;
session->CurrentlyDrawnEntity = nullptr;
session->CurrentlyDrawnTileElement = nullptr;
session->SurfaceElement = nullptr;
session->Surface = nullptr;
return session;
}

View File

@ -1026,7 +1026,7 @@ void PaintSurface(PaintSession& session, uint8_t direction, uint16_t height, con
DrawPixelInfo* dpi = &session.DPI;
session.InteractionType = ViewportInteractionItem::Terrain;
session.Flags |= PaintSessionFlags::PassedSurface;
session.SurfaceElement = reinterpret_cast<const TileElement*>(&tileElement);
session.Surface = &tileElement;
const auto zoomLevel = dpi->zoom_level;
const uint8_t rotation = session.CurrentRotation;

View File

@ -452,13 +452,13 @@ static bool MiniGolfPaintUtilShouldDrawFence(PaintSession& session, const TrackE
return false;
}
const TileElement* surfaceElement = session.SurfaceElement;
const SurfaceElement* surfaceElement = session.Surface;
if (surfaceElement->BaseHeight != trackElement.BaseHeight)
{
return true;
}
if (surfaceElement->AsSurface()->GetSlope() != TILE_ELEMENT_SLOPE_FLAT)
if (surfaceElement->GetSlope() != TILE_ELEMENT_SLOPE_FLAT)
{
return true;
}