From 944c6994b7e9c89d28bf8b67682a8d581a24772c Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sun, 25 Aug 2024 15:10:30 +0200 Subject: [PATCH] Update polyobjs every frame (wtb UpdateLevelMesh notification about this) --- src/rendering/hwrenderer/doom_levelmesh.cpp | 9 +++++++++ src/rendering/hwrenderer/doom_levelmesh.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/rendering/hwrenderer/doom_levelmesh.cpp b/src/rendering/hwrenderer/doom_levelmesh.cpp index 4983ab22d..8392cd737 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.cpp +++ b/src/rendering/hwrenderer/doom_levelmesh.cpp @@ -176,6 +176,12 @@ DoomLevelMesh::DoomLevelMesh(FLevelLocals& doomMap) void DoomLevelMesh::BeginFrame(FLevelLocals& doomMap) { + // To do: we don't need to always do this. UpdateLevelMesh should tell us when polyobjs move. + for (side_t* side : PolySides) + { + UpdateSide(doomMap, side->Index()); + } + CreateLights(doomMap); } @@ -342,7 +348,10 @@ void DoomLevelMesh::CreateSurfaces(FLevelLocals& doomMap) side_t* side = &doomMap.sides[i]; bool isPolyLine = !!(side->Flags & WALLF_POLYOBJ); if (isPolyLine) + { + PolySides.Push(side); continue; + } UpdateSide(doomMap, i); } diff --git a/src/rendering/hwrenderer/doom_levelmesh.h b/src/rendering/hwrenderer/doom_levelmesh.h index cab491162..0b29e9785 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.h +++ b/src/rendering/hwrenderer/doom_levelmesh.h @@ -133,6 +133,8 @@ private: TArray Sides; TArray Flats; + TArray PolySides; + std::map bindings; MeshBuilder state; bool LightsCreated = false;