- this hack is needed because dragging vertices around can randomly create wall intersection.

In clear English: Geometry in Build maps is always broken by design. :(
This commit is contained in:
Christoph Oelckers 2022-01-09 20:38:07 +01:00
parent e1661e0de1
commit 91d51d518b
3 changed files with 5 additions and 2 deletions

View file

@ -400,6 +400,7 @@ void dragpoint(walltype* startwall, int newx, int newy)
vertexscan(startwall, [&](walltype* wal)
{
wal->move(newx, newy);
wal->sectorp()->exflags |= SECTOREX_DRAGGED;
});
}

View file

@ -85,6 +85,7 @@ DEFINE_TFLAGS_OPERATORS(ESectorFlags)
enum ESectorExBits
{
SECTOREX_CLOUDSCROLL = 1,
SECTOREX_DRAGGED = 2,
};
// Flags for retriangulation

View file

@ -250,10 +250,11 @@ int BunchDrawer::ClipLine(int aline, bool portal)
// check against the maximum possible viewing range of the sector.
// Todo: check if this is sufficient or if we really have to do a more costly check against the single visible segments.
// Note: These walls may be excluded from the clipper, but not from being drawn!
// if sectors got dragged around there may be overlaps which this code does not handle well do it may not run on such sectors.
bool dontclip = false;
if (sectStartAngle != -1)
if (sectStartAngle != -1 && !(wall[line].sectorp()->exflags & SECTOREX_DRAGGED))
{
if (sectStartAngle > endAngle || sectEndAngle < startAngle)
if ((sectStartAngle > endAngle || sectEndAngle < startAngle))
{
dontclip = true;
}