- fixed some issues with setting the vertex dirty state. It was also called from several sector init functions and copy code for Boom deep water. The only case where SetPlaneTexZ should call it is from the interpolation code so this is a special case now.

This commit is contained in:
Christoph Oelckers 2014-07-28 18:01:01 +02:00
parent ece10bb57f
commit 355dd1c2f5
2 changed files with 5 additions and 5 deletions

View file

@ -451,12 +451,12 @@ void DSectorPlaneInterpolation::Restore()
if (!ceiling)
{
sector->floorplane.d = bakheight;
sector->SetPlaneTexZ(sector_t::floor, baktexz);
sector->SetPlaneTexZ(sector_t::floor, baktexz, true);
}
else
{
sector->ceilingplane.d = bakheight;
sector->SetPlaneTexZ(sector_t::ceiling, baktexz);
sector->SetPlaneTexZ(sector_t::ceiling, baktexz, true);
}
P_RecalculateAttached3DFloors(sector);
}
@ -487,7 +487,7 @@ void DSectorPlaneInterpolation::Interpolate(fixed_t smoothratio)
baktexz = sector->GetPlaneTexZ(pos);
*pheight = oldheight + FixedMul(bakheight - oldheight, smoothratio);
sector->SetPlaneTexZ(pos, oldtexz + FixedMul(baktexz - oldtexz, smoothratio));
sector->SetPlaneTexZ(pos, oldtexz + FixedMul(baktexz - oldtexz, smoothratio), true);
P_RecalculateAttached3DFloors(sector);
}

View file

@ -649,10 +649,10 @@ struct sector_t
for (unsigned i = 0; i < e->XFloor.attached.Size(); i++) e->XFloor.attached[i]->SetVerticesDirty();
}
void SetPlaneTexZ(int pos, fixed_t val)
void SetPlaneTexZ(int pos, fixed_t val, bool dirtify = false) // This mainly gets used by init code. The only place where it must set the vertex to dirty is the interpolation code.
{
planes[pos].TexZ = val;
SetAllVerticesDirty();
if (dirtify) SetAllVerticesDirty();
}
void ChangePlaneTexZ(int pos, fixed_t val)