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;