- use one of the new floating point special variables to store the portal plane height of the skybox things.

This commit is contained in:
Christoph Oelckers 2016-03-21 00:05:44 +01:00
parent 289cdfbefd
commit 7ebb96f15c
9 changed files with 40 additions and 38 deletions

View file

@ -292,7 +292,7 @@ void P_ThinkParticles ()
if (!particle->subsector->sector->PortalBlocksMovement(sector_t::ceiling)) if (!particle->subsector->sector->PortalBlocksMovement(sector_t::ceiling))
{ {
AActor *skybox = particle->subsector->sector->SkyBoxes[sector_t::ceiling]; AActor *skybox = particle->subsector->sector->SkyBoxes[sector_t::ceiling];
if (particle->z > skybox->threshold) if (particle->z > FLOAT2FIXED(skybox->specialf1))
{ {
particle->x += FLOAT2FIXED(skybox->Scale.X); particle->x += FLOAT2FIXED(skybox->Scale.X);
particle->y += FLOAT2FIXED(skybox->Scale.Y); particle->y += FLOAT2FIXED(skybox->Scale.Y);
@ -302,7 +302,7 @@ void P_ThinkParticles ()
else if (!particle->subsector->sector->PortalBlocksMovement(sector_t::floor)) else if (!particle->subsector->sector->PortalBlocksMovement(sector_t::floor))
{ {
AActor *skybox = particle->subsector->sector->SkyBoxes[sector_t::floor]; AActor *skybox = particle->subsector->sector->SkyBoxes[sector_t::floor];
if (particle->z < skybox->threshold) if (particle->z < FLOAT2FIXED(skybox->specialf1))
{ {
particle->x += FLOAT2FIXED(skybox->Scale.X); particle->x += FLOAT2FIXED(skybox->Scale.X);
particle->y += FLOAT2FIXED(skybox->Scale.Y); particle->y += FLOAT2FIXED(skybox->Scale.Y);

View file

@ -752,14 +752,14 @@ static int LineIsAbove(line_t *line, AActor *actor)
{ {
AActor *point = line->frontsector->SkyBoxes[sector_t::floor]; AActor *point = line->frontsector->SkyBoxes[sector_t::floor];
if (point == NULL) return -1; if (point == NULL) return -1;
return point->threshold >= actor->_f_Top(); return point->specialf1 >= actor->Top();
} }
static int LineIsBelow(line_t *line, AActor *actor) static int LineIsBelow(line_t *line, AActor *actor)
{ {
AActor *point = line->frontsector->SkyBoxes[sector_t::ceiling]; AActor *point = line->frontsector->SkyBoxes[sector_t::ceiling];
if (point == NULL) return -1; if (point == NULL) return -1;
return point->threshold <= actor->_f_Z(); return point->specialf1 <= actor->Z();
} }
// //
@ -858,7 +858,7 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec
if (state == 1) if (state == 1)
{ {
// the line should not block but we should set the ceilingz to the portal boundary so that we can't float up into that line. // the line should not block but we should set the ceilingz to the portal boundary so that we can't float up into that line.
double portalz = FIXED2FLOAT(cres.line->frontsector->SkyBoxes[sector_t::floor]->threshold); double portalz = cres.line->frontsector->SkyBoxes[sector_t::floor]->specialf1;
if (portalz < tm.ceilingz) if (portalz < tm.ceilingz)
{ {
tm.ceilingz = portalz; tm.ceilingz = portalz;
@ -874,7 +874,7 @@ bool PIT_CheckLine(FMultiBlockLinesIterator &mit, FMultiBlockLinesIterator::Chec
if (state == -1) return true; if (state == -1) return true;
if (state == 1) if (state == 1)
{ {
double portalz = FIXED2DBL(cres.line->frontsector->SkyBoxes[sector_t::ceiling]->threshold); double portalz = cres.line->frontsector->SkyBoxes[sector_t::ceiling]->specialf1;
if (portalz > tm.floorz) if (portalz > tm.floorz)
{ {
tm.floorz = portalz; tm.floorz = portalz;
@ -3661,8 +3661,8 @@ struct aim_t
{ {
AActor *portal = entersec->SkyBoxes[position]; AActor *portal = entersec->SkyBoxes[position];
if (position == sector_t::ceiling && portal->threshold < limitz) return; if (position == sector_t::ceiling && FLOAT2FIXED(portal->specialf1) < limitz) return;
else if (position == sector_t::floor && portal->threshold > limitz) return; else if (position == sector_t::floor && FLOAT2FIXED(portal->specialf1) > limitz) return;
aim_t newtrace = Clone(); aim_t newtrace = Clone();
@ -3672,7 +3672,7 @@ struct aim_t
newtrace.startpos = { startpos.x + FLOAT2FIXED(portal->Scale.X), startpos.y + FLOAT2FIXED(portal->Scale.Y), startpos.z }; newtrace.startpos = { startpos.x + FLOAT2FIXED(portal->Scale.X), startpos.y + FLOAT2FIXED(portal->Scale.Y), startpos.z };
newtrace.startfrac = frac + FixedDiv(FRACUNIT, attackrange); // this is to skip the transition line to the portal which would produce a bogus opening newtrace.startfrac = frac + FixedDiv(FRACUNIT, attackrange); // this is to skip the transition line to the portal which would produce a bogus opening
newtrace.lastsector = P_PointInSector(newtrace.startpos.x + FixedMul(aimtrace.x, newtrace.startfrac) , newtrace.startpos.y + FixedMul(aimtrace.y, newtrace.startfrac)); newtrace.lastsector = P_PointInSector(newtrace.startpos.x + FixedMul(aimtrace.x, newtrace.startfrac) , newtrace.startpos.y + FixedMul(aimtrace.y, newtrace.startfrac));
newtrace.limitz = portal->threshold; newtrace.limitz = FLOAT2FIXED(portal->specialf1);
if (aimdebug) if (aimdebug)
Printf("-----Entering %s portal from sector %d to sector %d\n", position ? "ceiling" : "floor", lastsector->sectornum, newtrace.lastsector->sectornum); Printf("-----Entering %s portal from sector %d to sector %d\n", position ? "ceiling" : "floor", lastsector->sectornum, newtrace.lastsector->sectornum);
newtrace.AimTraverse(); newtrace.AimTraverse();

View file

@ -214,7 +214,7 @@ void P_LineOpening (FLineOpening &open, AActor *actor, const line_t *linedef,
{ {
// We must check through the portal for the actual dropoff. // We must check through the portal for the actual dropoff.
// If there's no lines in the lower sections we'd never get a usable value otherwise. // If there's no lines in the lower sections we'd never get a usable value otherwise.
open.lowfloor = back->NextLowestFloorAt(refx, refy, back->SkyBoxes[sector_t::floor]->threshold-1); open.lowfloor = back->NextLowestFloorAt(refx, refy, FLOAT2FIXED(back->SkyBoxes[sector_t::floor]->specialf1)-1);
} }
} }
else else
@ -228,7 +228,7 @@ void P_LineOpening (FLineOpening &open, AActor *actor, const line_t *linedef,
{ {
// We must check through the portal for the actual dropoff. // We must check through the portal for the actual dropoff.
// If there's no lines in the lower sections we'd never get a usable value otherwise. // If there's no lines in the lower sections we'd never get a usable value otherwise.
open.lowfloor = front->NextLowestFloorAt(refx, refy, front->SkyBoxes[sector_t::floor]->threshold - 1); open.lowfloor = front->NextLowestFloorAt(refx, refy, FLOAT2FIXED(front->SkyBoxes[sector_t::floor]->specialf1) - 1);
} }
} }
open.frontfloorplane = front->floorplane; open.frontfloorplane = front->floorplane;

View file

@ -301,6 +301,8 @@ void AActor::Serialize(FArchive &arc)
} }
arc << special1 arc << special1
<< special2 << special2
<< specialf1
<< specialf2
<< health << health
<< movedir << movedir
<< visdir << visdir
@ -3258,13 +3260,13 @@ fixedvec3 AActor::GetPortalTransition(fixed_t byoffset, sector_t **pSec)
{ {
bool moved = false; bool moved = false;
sector_t *sec = Sector; sector_t *sec = Sector;
fixed_t testz = _f_Z() + byoffset; double testz = Z() + FIXED2FLOAT(byoffset);
fixedvec3 pos = _f_Pos(); fixedvec3 pos = _f_Pos();
while (!sec->PortalBlocksMovement(sector_t::ceiling)) while (!sec->PortalBlocksMovement(sector_t::ceiling))
{ {
AActor *port = sec->SkyBoxes[sector_t::ceiling]; AActor *port = sec->SkyBoxes[sector_t::ceiling];
if (testz > port->threshold) if (testz > port->specialf1)
{ {
pos = PosRelative(port->Sector); pos = PosRelative(port->Sector);
sec = P_PointInSector(pos.x, pos.y); sec = P_PointInSector(pos.x, pos.y);
@ -3277,7 +3279,7 @@ fixedvec3 AActor::GetPortalTransition(fixed_t byoffset, sector_t **pSec)
while (!sec->PortalBlocksMovement(sector_t::floor)) while (!sec->PortalBlocksMovement(sector_t::floor))
{ {
AActor *port = sec->SkyBoxes[sector_t::floor]; AActor *port = sec->SkyBoxes[sector_t::floor];
if (testz <= port->threshold) if (testz <= port->specialf1)
{ {
pos = PosRelative(port->Sector); pos = PosRelative(port->Sector);
sec = P_PointInSector(pos.x, pos.y); sec = P_PointInSector(pos.x, pos.y);
@ -3297,7 +3299,7 @@ void AActor::CheckPortalTransition(bool islinked)
while (!Sector->PortalBlocksMovement(sector_t::ceiling)) while (!Sector->PortalBlocksMovement(sector_t::ceiling))
{ {
AActor *port = Sector->SkyBoxes[sector_t::ceiling]; AActor *port = Sector->SkyBoxes[sector_t::ceiling];
if (_f_Z() > port->threshold) if (Z() > port->specialf1)
{ {
fixedvec3 oldpos = _f_Pos(); fixedvec3 oldpos = _f_Pos();
if (islinked && !moved) UnlinkFromWorld(); if (islinked && !moved) UnlinkFromWorld();
@ -3316,7 +3318,7 @@ void AActor::CheckPortalTransition(bool islinked)
while (!Sector->PortalBlocksMovement(sector_t::floor)) while (!Sector->PortalBlocksMovement(sector_t::floor))
{ {
AActor *port = Sector->SkyBoxes[sector_t::floor]; AActor *port = Sector->SkyBoxes[sector_t::floor];
if (_f_Z() < port->threshold && _f_floorz() < port->threshold) if (Z() < port->specialf1 && floorz < port->specialf1)
{ {
fixedvec3 oldpos = _f_Pos(); fixedvec3 oldpos = _f_Pos();
if (islinked && !moved) UnlinkFromWorld(); if (islinked && !moved) UnlinkFromWorld();

View file

@ -877,9 +877,9 @@ void sector_t::CheckPortalPlane(int plane)
AActor *portal = SkyBoxes[plane]; AActor *portal = SkyBoxes[plane];
if (!portal || portal->special1 != SKYBOX_LINKEDPORTAL) return; if (!portal || portal->special1 != SKYBOX_LINKEDPORTAL) return;
fixed_t planeh = planes[plane].TexZ; double planeh = FIXED2DBL(planes[plane].TexZ);
int obstructed = PLANEF_OBSTRUCTED * (plane == sector_t::floor ? int obstructed = PLANEF_OBSTRUCTED * (plane == sector_t::floor ?
planeh > portal->threshold : planeh < portal->threshold); planeh > portal->specialf1 : planeh < portal->specialf1);
planes[plane].Flags = (planes[plane].Flags & ~PLANEF_OBSTRUCTED) | obstructed; planes[plane].Flags = (planes[plane].Flags & ~PLANEF_OBSTRUCTED) | obstructed;
} }
@ -895,12 +895,12 @@ fixed_t sector_t::_f_HighestCeilingAt(fixed_t x, fixed_t y, sector_t **resultsec
fixed_t planeheight = FIXED_MIN; fixed_t planeheight = FIXED_MIN;
// Continue until we find a blocking portal or a portal below where we actually are. // Continue until we find a blocking portal or a portal below where we actually are.
while (!check->PortalBlocksMovement(ceiling) && planeheight < check->SkyBoxes[ceiling]->threshold) while (!check->PortalBlocksMovement(ceiling) && planeheight < FLOAT2FIXED(check->SkyBoxes[ceiling]->specialf1))
{ {
fixedvec2 pos = check->CeilingDisplacement(); fixedvec2 pos = check->CeilingDisplacement();
x += pos.x; x += pos.x;
y += pos.y; y += pos.y;
planeheight = check->SkyBoxes[ceiling]->threshold; planeheight = FLOAT2FIXED(check->SkyBoxes[ceiling]->specialf1);
check = P_PointInSector(x, y); check = P_PointInSector(x, y);
} }
if (resultsec) *resultsec = check; if (resultsec) *resultsec = check;
@ -919,12 +919,12 @@ fixed_t sector_t::_f_LowestFloorAt(fixed_t x, fixed_t y, sector_t **resultsec)
fixed_t planeheight = FIXED_MAX; fixed_t planeheight = FIXED_MAX;
// Continue until we find a blocking portal or a portal above where we actually are. // Continue until we find a blocking portal or a portal above where we actually are.
while (!check->PortalBlocksMovement(floor) && planeheight > check->SkyBoxes[floor]->threshold) while (!check->PortalBlocksMovement(floor) && planeheight > FLOAT2FIXED(check->SkyBoxes[floor]->specialf1))
{ {
fixedvec2 pos = check->FloorDisplacement(); fixedvec2 pos = check->FloorDisplacement();
x += pos.x; x += pos.x;
y += pos.y; y += pos.y;
planeheight = check->SkyBoxes[floor]->threshold; planeheight = FLOAT2FIXED(check->SkyBoxes[floor]->specialf1);
check = P_PointInSector(x, y); check = P_PointInSector(x, y);
} }
if (resultsec) *resultsec = check; if (resultsec) *resultsec = check;
@ -959,7 +959,7 @@ fixed_t sector_t::NextHighestCeilingAt(fixed_t x, fixed_t y, fixed_t bottomz, fi
return ff_bottom; return ff_bottom;
} }
} }
if ((flags & FFCF_NOPORTALS) || sec->PortalBlocksMovement(ceiling) || planeheight >= sec->SkyBoxes[ceiling]->threshold) if ((flags & FFCF_NOPORTALS) || sec->PortalBlocksMovement(ceiling) || planeheight >= FLOAT2FIXED(sec->SkyBoxes[ceiling]->specialf1))
{ // Use sector's floor { // Use sector's floor
if (resultffloor) *resultffloor = NULL; if (resultffloor) *resultffloor = NULL;
if (resultsec) *resultsec = sec; if (resultsec) *resultsec = sec;
@ -970,7 +970,7 @@ fixed_t sector_t::NextHighestCeilingAt(fixed_t x, fixed_t y, fixed_t bottomz, fi
fixedvec2 pos = sec->CeilingDisplacement(); fixedvec2 pos = sec->CeilingDisplacement();
x += pos.x; x += pos.x;
y += pos.y; y += pos.y;
planeheight = sec->SkyBoxes[ceiling]->threshold; planeheight = FLOAT2FIXED(sec->SkyBoxes[ceiling]->specialf1);
sec = P_PointInSector(x, y); sec = P_PointInSector(x, y);
} }
} }
@ -1004,7 +1004,7 @@ fixed_t sector_t::NextLowestFloorAt(fixed_t x, fixed_t y, fixed_t z, int flags,
} }
} }
} }
if ((flags & FFCF_NOPORTALS) || sec->PortalBlocksMovement(sector_t::floor) || planeheight <= sec->SkyBoxes[floor]->threshold) if ((flags & FFCF_NOPORTALS) || sec->PortalBlocksMovement(sector_t::floor) || planeheight <= FLOAT2FIXED(sec->SkyBoxes[floor]->specialf1))
{ // Use sector's floor { // Use sector's floor
if (resultffloor) *resultffloor = NULL; if (resultffloor) *resultffloor = NULL;
if (resultsec) *resultsec = sec; if (resultsec) *resultsec = sec;
@ -1015,7 +1015,7 @@ fixed_t sector_t::NextLowestFloorAt(fixed_t x, fixed_t y, fixed_t z, int flags,
fixedvec2 pos = sec->FloorDisplacement(); fixedvec2 pos = sec->FloorDisplacement();
x += pos.x; x += pos.x;
y += pos.y; y += pos.y;
planeheight = sec->SkyBoxes[floor]->threshold; planeheight = FLOAT2FIXED(sec->SkyBoxes[floor]->specialf1);
sec = P_PointInSector(x, y); sec = P_PointInSector(x, y);
} }
} }

View file

@ -1051,7 +1051,7 @@ void P_SpawnPortal(line_t *line, int sectortag, int plane, int alpha, int linked
// store the portal displacement in the unused scaleX/Y members of the portal reference actor. // store the portal displacement in the unused scaleX/Y members of the portal reference actor.
anchor->Scale.X = -(reference->Scale.X = FIXED2DBL(x2 - x1)); anchor->Scale.X = -(reference->Scale.X = FIXED2DBL(x2 - x1));
anchor->Scale.Y = -(reference->Scale.Y = FIXED2DBL(y2 - y1)); anchor->Scale.Y = -(reference->Scale.Y = FIXED2DBL(y2 - y1));
anchor->threshold = reference->threshold = z; anchor->specialf1 = reference->specialf1 = FIXED2FLOAT(z);
reference->Mate = anchor; reference->Mate = anchor;
anchor->Mate = reference; anchor->Mate = reference;

View file

@ -195,8 +195,8 @@ void FTraceInfo::EnterSectorPortal(int position, fixed_t frac, sector_t *enterse
if (aimdir != -1 && aimdir != position) return; if (aimdir != -1 && aimdir != position) return;
AActor *portal = entersec->SkyBoxes[position]; AActor *portal = entersec->SkyBoxes[position];
if (aimdir == sector_t::ceiling && portal->threshold < limitz) return; if (aimdir == sector_t::ceiling && FLOAT2FIXED(portal->specialf1) < limitz) return;
else if (aimdir == sector_t::floor && portal->threshold > limitz) return; else if (aimdir == sector_t::floor && FLOAT2FIXED(portal->specialf1) > limitz) return;
FTraceInfo newtrace; FTraceInfo newtrace;
FTraceResults results; FTraceResults results;
@ -229,7 +229,7 @@ void FTraceInfo::EnterSectorPortal(int position, fixed_t frac, sector_t *enterse
newtrace.inshootthrough = true; newtrace.inshootthrough = true;
newtrace.startfrac = frac; newtrace.startfrac = frac;
newtrace.aimdir = position; newtrace.aimdir = position;
newtrace.limitz = portal->threshold; newtrace.limitz = FLOAT2FIXED(portal->specialf1);
newtrace.sectorsel = 0; newtrace.sectorsel = 0;
if (newtrace.TraceTraverse(ActorMask ? PT_ADDLINES | PT_ADDTHINGS | PT_COMPATIBLE : PT_ADDLINES)) if (newtrace.TraceTraverse(ActorMask ? PT_ADDLINES | PT_ADDTHINGS | PT_COMPATIBLE : PT_ADDLINES))

View file

@ -1089,8 +1089,8 @@ void P_CreateLinkedPortals()
} }
if (sectors[i].PortalIsLinked(sector_t::ceiling) && sectors[i].PortalIsLinked(sector_t::floor)) if (sectors[i].PortalIsLinked(sector_t::ceiling) && sectors[i].PortalIsLinked(sector_t::floor))
{ {
fixed_t cz = sectors[i].SkyBoxes[sector_t::ceiling]->threshold; double cz = sectors[i].SkyBoxes[sector_t::ceiling]->specialf1;
fixed_t fz = sectors[i].SkyBoxes[sector_t::floor]->threshold; double fz = sectors[i].SkyBoxes[sector_t::floor]->specialf1;
if (cz < fz) if (cz < fz)
{ {
// This is a fatal condition. We have to remove one of the two portals. Choose the one that doesn't match the current plane // This is a fatal condition. We have to remove one of the two portals. Choose the one that doesn't match the current plane
@ -1204,7 +1204,7 @@ bool P_CollectConnectedGroups(int startgroup, const fixedvec3 &position, fixed_t
{ {
sector_t *sec = P_PointInSector(position.x, position.y); sector_t *sec = P_PointInSector(position.x, position.y);
sector_t *wsec = sec; sector_t *wsec = sec;
while (!wsec->PortalBlocksMovement(sector_t::ceiling) && upperz > wsec->SkyBoxes[sector_t::ceiling]->threshold) while (!wsec->PortalBlocksMovement(sector_t::ceiling) && upperz > FLOAT2FIXED(wsec->SkyBoxes[sector_t::ceiling]->specialf1))
{ {
sector_t *othersec = wsec->SkyBoxes[sector_t::ceiling]->Sector; sector_t *othersec = wsec->SkyBoxes[sector_t::ceiling]->Sector;
fixedvec2 pos = Displacements.getOffset(startgroup, othersec->PortalGroup); fixedvec2 pos = Displacements.getOffset(startgroup, othersec->PortalGroup);
@ -1216,7 +1216,7 @@ bool P_CollectConnectedGroups(int startgroup, const fixedvec3 &position, fixed_t
retval = true; retval = true;
} }
wsec = sec; wsec = sec;
while (!wsec->PortalBlocksMovement(sector_t::floor) && position.z < wsec->SkyBoxes[sector_t::floor]->threshold) while (!wsec->PortalBlocksMovement(sector_t::floor) && position.z < FLOAT2FIXED(wsec->SkyBoxes[sector_t::floor]->specialf1))
{ {
sector_t *othersec = wsec->SkyBoxes[sector_t::floor]->Sector; sector_t *othersec = wsec->SkyBoxes[sector_t::floor]->Sector;
fixedvec2 pos = Displacements.getOffset(startgroup, othersec->PortalGroup); fixedvec2 pos = Displacements.getOffset(startgroup, othersec->PortalGroup);
@ -1256,7 +1256,7 @@ bool P_CollectConnectedGroups(int startgroup, const fixedvec3 &position, fixed_t
sector_t *sec = s ? ld->backsector : ld->frontsector; sector_t *sec = s ? ld->backsector : ld->frontsector;
if (sec && !(sec->PortalBlocksMovement(sector_t::ceiling))) if (sec && !(sec->PortalBlocksMovement(sector_t::ceiling)))
{ {
if (sec->SkyBoxes[sector_t::ceiling]->threshold < upperz) if (FLOAT2FIXED(sec->SkyBoxes[sector_t::ceiling]->specialf1) < upperz)
{ {
int grp = sec->SkyBoxes[sector_t::ceiling]->Sector->PortalGroup; int grp = sec->SkyBoxes[sector_t::ceiling]->Sector->PortalGroup;
if (!(processMask.getBit(grp))) if (!(processMask.getBit(grp)))
@ -1275,7 +1275,7 @@ bool P_CollectConnectedGroups(int startgroup, const fixedvec3 &position, fixed_t
sector_t *sec = s ? ld->backsector : ld->frontsector; sector_t *sec = s ? ld->backsector : ld->frontsector;
if (sec && !(sec->PortalBlocksMovement(sector_t::floor))) if (sec && !(sec->PortalBlocksMovement(sector_t::floor)))
{ {
if (sec->SkyBoxes[sector_t::floor]->threshold > position.z) if (FLOAT2FIXED(sec->SkyBoxes[sector_t::floor]->specialf1) > position.z)
{ {
int grp = sec->SkyBoxes[sector_t::floor]->Sector->PortalGroup; int grp = sec->SkyBoxes[sector_t::floor]->Sector->PortalGroup;
if (!(processMask.getBit(grp))) if (!(processMask.getBit(grp)))

View file

@ -713,7 +713,7 @@ void R_InterpolateView (player_t *player, fixed_t frac, InterpolationViewer *ivi
while (!viewsector->PortalBlocksMovement(sector_t::ceiling)) while (!viewsector->PortalBlocksMovement(sector_t::ceiling))
{ {
AActor *point = viewsector->SkyBoxes[sector_t::ceiling]; AActor *point = viewsector->SkyBoxes[sector_t::ceiling];
if (viewz > point->threshold) if (viewz > FLOAT2FIXED(point->specialf1))
{ {
viewx += FLOAT2FIXED(point->Scale.X); viewx += FLOAT2FIXED(point->Scale.X);
viewy += FLOAT2FIXED(point->Scale.Y); viewy += FLOAT2FIXED(point->Scale.Y);
@ -727,7 +727,7 @@ void R_InterpolateView (player_t *player, fixed_t frac, InterpolationViewer *ivi
while (!viewsector->PortalBlocksMovement(sector_t::floor)) while (!viewsector->PortalBlocksMovement(sector_t::floor))
{ {
AActor *point = viewsector->SkyBoxes[sector_t::floor]; AActor *point = viewsector->SkyBoxes[sector_t::floor];
if (viewz < point->threshold) if (viewz < FLOAT2FIXED(point->specialf1))
{ {
viewx += FLOAT2FIXED(point->Scale.X); viewx += FLOAT2FIXED(point->Scale.X);
viewy += FLOAT2FIXED(point->Scale.Y); viewy += FLOAT2FIXED(point->Scale.Y);