- wrap access to portal properties into sector_t:: member functions.

This commit is contained in:
Christoph Oelckers 2016-04-19 11:35:28 +02:00
commit 322b9fc0ae
11 changed files with 109 additions and 96 deletions

View file

@ -287,22 +287,21 @@ void P_ThinkParticles ()
particle->Pos.Z += particle->Vel.Z;
particle->Vel += particle->Acc;
particle->subsector = R_PointInSubsector(particle->Pos);
sector_t *s = particle->subsector->sector;
// Handle crossing a sector portal.
if (!particle->subsector->sector->PortalBlocksMovement(sector_t::ceiling))
if (!s->PortalBlocksMovement(sector_t::ceiling))
{
AActor *skybox = particle->subsector->sector->SkyBoxes[sector_t::ceiling];
if (particle->Pos.Z > skybox->specialf1)
if (particle->Pos.Z > s->GetPortalPlaneZ(sector_t::ceiling))
{
particle->Pos += skybox->Scale;
particle->Pos += s->GetPortalDisplacement(sector_t::ceiling);
particle->subsector = NULL;
}
}
else if (!particle->subsector->sector->PortalBlocksMovement(sector_t::floor))
else if (!s->PortalBlocksMovement(sector_t::floor))
{
AActor *skybox = particle->subsector->sector->SkyBoxes[sector_t::floor];
if (particle->Pos.Z < skybox->specialf1)
if (particle->Pos.Z < s->GetPortalPlaneZ(sector_t::floor))
{
particle->Pos += skybox->Scale;
particle->Pos += s->GetPortalDisplacement(sector_t::floor);
particle->subsector = NULL;
}
}