Skip to content

Commit

Permalink
Add handling for drawfullheight flag
Browse files Browse the repository at this point in the history
Parse drawfullheight flag in UDMF
Draw full height for walls if the linedef has this flag
  • Loading branch information
Talon1024 authored and coelckers committed Jan 11, 2020
1 parent b443d07 commit 7ca6e7e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 7 deletions.
1 change: 1 addition & 0 deletions specs/udmf_zdoom.txt
Expand Up @@ -141,6 +141,7 @@ Note: All <bool> fields default to false unless mentioned otherwise.
// 13: Portal line.
revealed = <bool>; // true = line is initially visible on automap.
noskywalls = <bool>; // true = skies are not drawn above or below this line
drawfullheight = <bool>; // true = draw the maximum height instead of the minimum height

health = <int>; // Amount of hitpoints for this line.
healthgroup = <int>; // ID of destructible object to synchronize hitpoints (optional, default is 0)
Expand Down
4 changes: 4 additions & 0 deletions src/maploader/udmf.cpp
Expand Up @@ -1078,6 +1078,10 @@ class UDMFParser : public UDMFParserBase
Flag(ld->flags, ML_NOSKYWALLS, key);
continue;

case NAME_DrawFullHeight:
Flag(ld->flags, ML_DRAWFULLHEIGHT, key);
continue;

case NAME_MoreIds:
// delay parsing of the tag string until parsing of the sector is complete
// This ensures that the ID is always the first tag in the list.
Expand Down
20 changes: 13 additions & 7 deletions src/rendering/hwrenderer/scene/hw_walls.cpp
Expand Up @@ -2023,11 +2023,14 @@ void HWWall::Process(HWDrawInfo *di, seg_t *seg, sector_t * frontsector, sector_
float bch1a = bch1, bch2a = bch2;
if (frontsector->GetTexture(sector_t::floor) != skyflatnum || backsector->GetTexture(sector_t::floor) != skyflatnum)
{
// the back sector's floor obstructs part of this wall
if (ffh1 > bch1 && ffh2 > bch2)
// the back sector's floor obstructs part of this wall
if (!seg->linedef->flags & ML_DRAWFULLHEIGHT)
{
bch2a = ffh2;
bch1a = ffh1;
if (ffh1 > bch1 && ffh2 > bch2)
{
bch2a = ffh2;
bch1a = ffh1;
}
}
}

Expand Down Expand Up @@ -2105,10 +2108,13 @@ void HWWall::Process(HWDrawInfo *di, seg_t *seg, sector_t * frontsector, sector_

/* bottom texture */
// the back sector's ceiling obstructs part of this wall (specially important for sky sectors)
if (fch1 < bfh1 && fch2 < bfh2)
if (!seg->linedef->flags & ML_DRAWFULLHEIGHT)
{
bfh1 = fch1;
bfh2 = fch2;
if (fch1 < bfh1 && fch2 < bfh2)
{
bfh1 = fch1;
bfh2 = fch2;
}
}

if (bfh1 > ffh1 || bfh2 > ffh2)
Expand Down
1 change: 1 addition & 0 deletions src/utility/namedef.h
Expand Up @@ -551,6 +551,7 @@ xx(Locknumber)
xx(Midtex3dimpassible)
xx(Revealed)
xx(AutomapStyle)
xx(DrawFullHeight)

xx(Playercross)
xx(Playeruse)
Expand Down

0 comments on commit 7ca6e7e

Please sign in to comment.