From e94bd7f641a4523d2d6c52ea48b3b029e6de47b7 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Mon, 26 Aug 2024 00:49:30 +0200 Subject: [PATCH] Fix 'Could not find space in level mesh buffer' error Interpolate sector height updates --- src/r_data/r_interpolate.cpp | 5 +++++ src/rendering/hwrenderer/doom_levelmesh.cpp | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/r_data/r_interpolate.cpp b/src/r_data/r_interpolate.cpp index 30dff51c6..7b6554f05 100644 --- a/src/r_data/r_interpolate.cpp +++ b/src/r_data/r_interpolate.cpp @@ -509,6 +509,11 @@ void DSectorPlaneInterpolation::Interpolate(double smoothratio) sector->SetPlaneTexZ(pos, oldtexz + (baktexz - oldtexz) * smoothratio, true); P_RecalculateAttached3DFloors(sector); sector->CheckPortalPlane(pos); + + if (ceiling) + LevelMeshUpdater->CeilingHeightChanged(sector); + else + LevelMeshUpdater->FloorHeightChanged(sector); } } diff --git a/src/rendering/hwrenderer/doom_levelmesh.cpp b/src/rendering/hwrenderer/doom_levelmesh.cpp index 452f2aef9..fedb61f9f 100644 --- a/src/rendering/hwrenderer/doom_levelmesh.cpp +++ b/src/rendering/hwrenderer/doom_levelmesh.cpp @@ -404,7 +404,7 @@ void DoomLevelMesh::FreeFlat(FLevelLocals& doomMap, unsigned int sectorIndex) while (surf != -1) { unsigned int next = DoomSurfaceInfos[surf].NextSurface; - FreeSurface(surf - 1); + FreeSurface(surf); surf = next; } Flats[sectorIndex].FirstSurface = -1; @@ -475,6 +475,16 @@ void DoomLevelMesh::SideTextureChanged(struct side_t* side, int section) void DoomLevelMesh::SectorLightChanged(struct sector_t* sector) { + /* + UpdateFlat(level, sector->Index()); + for (line_t* line : sector->Lines) + { + if (line->frontsector == sector && line->sidedef[0]) + UpdateSide(level, line->sidedef[0]->Index()); + else if (line->sidedef[1]) + UpdateSide(level, line->sidedef[1]->Index()); + } + */ } void DoomLevelMesh::SectorLightThinkerCreated(struct sector_t* sector, class DLighting* lightthinker)