Add more dynamic update code to level mesh

This commit is contained in:
Magnus Norddahl 2024-08-11 01:15:44 +02:00
commit f1b9e68305
15 changed files with 147 additions and 101 deletions

View file

@ -2989,23 +2989,24 @@ void MapLoader::InitLevelMesh(MapData* map)
for (unsigned int i = 0; i < Level->subsectors.Size(); i++)
allSurfaces += 2 + Level->subsectors[i].sector->e->XFloor.ffloors.Size() * 2;
Level->Surfaces.Resize(allSurfaces);
memset(Level->Surfaces.Data(), 0, sizeof(DoomLevelMeshSurface*) * allSurfaces);
Level->LightmapTiles.Resize(allSurfaces);
for (int& value : Level->LightmapTiles)
value = -1;
unsigned int offset = 0;
for (unsigned int i = 0; i < Level->sides.Size(); i++)
{
auto& side = Level->sides[i];
int count = 4 + side.sector->e->XFloor.ffloors.Size();
side.surface = TArrayView<DoomLevelMeshSurface*>(&Level->Surfaces[offset], count);
side.LightmapTiles = TArrayView<int>(&Level->LightmapTiles[offset], count);
offset += count;
}
for (unsigned int i = 0; i < Level->subsectors.Size(); i++)
{
auto& subsector = Level->subsectors[i];
unsigned int count = 1 + subsector.sector->e->XFloor.ffloors.Size();
subsector.surface[0] = TArrayView<DoomLevelMeshSurface*>(&Level->Surfaces[offset], count);
subsector.surface[1] = TArrayView<DoomLevelMeshSurface*>(&Level->Surfaces[offset + count], count);
subsector.LightmapTiles[0] = TArrayView<int>(&Level->LightmapTiles[offset], count);
subsector.LightmapTiles[1] = TArrayView<int>(&Level->LightmapTiles[offset + count], count);
offset += count * 2;
}