update walls on texZ change

This commit is contained in:
Ricardo Luís Vaz Silva 2025-01-26 20:10:35 -03:00 committed by Nash Muhandes
commit 65b75814ab
5 changed files with 22 additions and 9 deletions

View file

@ -1008,15 +1008,7 @@ public:
if (val != old)
{
//not sure actually what TexZ does, so changing passing this as "Other"
if(pos)
{
LevelMeshUpdater->SectorChangedOther(this);
}
else
{
LevelMeshUpdater->SectorChangedOther(this);
}
LevelMeshUpdater->SectorChangedTexZ(this);
}
}

View file

@ -49,6 +49,11 @@ void UpdateLevelMesh::SectorChangedOther(sector_t* sector)
PropagateCorrelations(this, &UpdateLevelMesh::OnSectorChangedOther, sector);
}
void UpdateLevelMesh::SectorChangedTexZ(sector_t* sector)
{
PropagateCorrelations(this, &UpdateLevelMesh::OnSectorChangedTexZ, sector);
}
void UpdateLevelMesh::SideTextureChanged(side_t* side, int section)
{
OnSideTextureChanged(side, section);
@ -98,6 +103,7 @@ struct NullLevelMeshUpdater : UpdateLevelMesh
void OnCeilingTextureChanged(sector_t* sector) override {}
void OnSectorChangedOther(sector_t* sector) override {}
void OnSectorChangedTexZ(sector_t* sector) override {}
void OnSideTextureChanged(side_t* side, int section) override {}
void OnSideDecalsChanged(side_t* side) override {}

View file

@ -17,6 +17,7 @@ struct UpdateLevelMesh
void CeilingTextureChanged(sector_t *sector);
void SectorChangedOther(sector_t *sector);
void SectorChangedTexZ(sector_t *sector);
void SideTextureChanged(side_t *side, int section);
void SideDecalsChanged(side_t* side);
@ -34,6 +35,7 @@ struct UpdateLevelMesh
virtual void OnCeilingTextureChanged(sector_t *sector) = 0;
virtual void OnSectorChangedOther(sector_t *sector) = 0;
virtual void OnSectorChangedTexZ(sector_t *sector) = 0;
virtual void OnSideTextureChanged(side_t *side, int section) = 0;
virtual void OnSideDecalsChanged(side_t* side) = 0;

View file

@ -626,6 +626,18 @@ void DoomLevelMesh::OnSectorChangedOther(sector_t* sector)
UpdateFlat(sector->Index(), SurfaceUpdateType::Full);
}
void DoomLevelMesh::OnSectorChangedTexZ(sector_t* sector)
{
UpdateFlat(sector->Index(), SurfaceUpdateType::Full);
for (line_t* line : sector->Lines)
{
if (line->sidedef[0])
UpdateSide(line->sidedef[0]->Index(), SurfaceUpdateType::Full);
else if (line->sidedef[1])
UpdateSide(line->sidedef[1]->Index(), SurfaceUpdateType::Full);
}
}
void DoomLevelMesh::OnSideTextureChanged(side_t* side, int section)
{
UpdateSide(side->Index(), SurfaceUpdateType::Full);

View file

@ -120,6 +120,7 @@ public:
void OnFloorTextureChanged(sector_t* sector) override;
void OnCeilingTextureChanged(sector_t* sector) override;
void OnSectorChangedOther(sector_t* sector) override;
void OnSectorChangedTexZ(sector_t* sector) override;
void OnSideTextureChanged(side_t* side, int section) override;
void OnSideDecalsChanged(side_t* side) override;
void OnSectorLightChanged(sector_t* sector) override;