mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-22 04:21:23 +00:00
Merge branch 't_moveplane-refactor' into 'next'
Remove faulty code from T_MovePlane() See merge request STJr/SRB2!876
This commit is contained in:
commit
464ecc01a4
4 changed files with 0 additions and 106 deletions
|
@ -26,19 +26,6 @@
|
|||
// FLOORS
|
||||
// ==========================================================================
|
||||
|
||||
//
|
||||
// Mini-P_IsObjectOnGroundIn for T_MovePlane hack
|
||||
//
|
||||
static inline boolean P_MobjReadyToMove(mobj_t *mo, sector_t *sec, boolean sectorisffloor, boolean sectorisquicksand)
|
||||
{
|
||||
if (sectorisquicksand)
|
||||
return (mo->z > sec->floorheight && mo->z < sec->ceilingheight);
|
||||
else if (!!(mo->flags & MF_SPAWNCEILING) ^ !!(mo->eflags & MFE_VERTICALFLIP))
|
||||
return ((sectorisffloor) ? (mo->z+mo->height != sec->floorheight) : (mo->z+mo->height != sec->ceilingheight));
|
||||
else
|
||||
return ((sectorisffloor) ? (mo->z != sec->ceilingheight) : (mo->z != sec->floorheight));
|
||||
}
|
||||
|
||||
//
|
||||
// Move a plane (floor or ceiling) and check for crushing
|
||||
//
|
||||
|
@ -48,14 +35,6 @@ result_e T_MovePlane(sector_t *sector, fixed_t speed, fixed_t dest, boolean crus
|
|||
boolean flag;
|
||||
fixed_t lastpos;
|
||||
fixed_t destheight; // used to keep floors/ceilings from moving through each other
|
||||
// Stuff used for mobj hacks.
|
||||
INT32 secnum = -1;
|
||||
mobj_t *mo = NULL;
|
||||
sector_t *sec = NULL;
|
||||
ffloor_t *rover = NULL;
|
||||
boolean sectorisffloor = false;
|
||||
boolean sectorisquicksand = false;
|
||||
|
||||
sector->moved = true;
|
||||
|
||||
switch (floorOrCeiling)
|
||||
|
@ -193,83 +172,6 @@ result_e T_MovePlane(sector_t *sector, fixed_t speed, fixed_t dest, boolean crus
|
|||
break;
|
||||
}
|
||||
|
||||
// Hack for buggy mobjs to move by gravity with moving planes.
|
||||
if (sector->tagline)
|
||||
sectorisffloor = true;
|
||||
|
||||
// Optimization condition. If the sector is not an FOF, declare sec as the main sector outside of the loop.
|
||||
if (!sectorisffloor)
|
||||
sec = sector;
|
||||
|
||||
// Optimization condition. Only run the logic if there is any Things in the sector.
|
||||
if (sectorisffloor || sec->thinglist)
|
||||
{
|
||||
// If this is an FOF being checked, check all the affected sectors for moving mobjs.
|
||||
while ((sectorisffloor ? (secnum = P_FindSectorFromLineTag(sector->tagline, secnum)) : (secnum = 1)) >= 0)
|
||||
{
|
||||
if (sectorisffloor)
|
||||
{
|
||||
// Get actual sector from the list of sectors.
|
||||
sec = §ors[secnum];
|
||||
|
||||
// Can't use P_InQuicksand because it will return the incorrect result
|
||||
// because of checking for heights.
|
||||
for (rover = sec->ffloors; rover; rover = rover->next)
|
||||
{
|
||||
if (rover->target == sec && (rover->flags & FF_QUICKSAND))
|
||||
{
|
||||
sectorisquicksand = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (mo = sec->thinglist; mo; mo = mo->snext)
|
||||
{
|
||||
// The object should be ready to move as defined by this function.
|
||||
if (!P_MobjReadyToMove(mo, sec, sectorisffloor, sectorisquicksand))
|
||||
continue;
|
||||
|
||||
// The object should not be moving at all.
|
||||
if (mo->momx || mo->momy || mo->momz)
|
||||
continue;
|
||||
|
||||
// These objects will be affected by this condition.
|
||||
switch (mo->type)
|
||||
{
|
||||
case MT_GOOP: // Egg Slimer's goop objects
|
||||
case MT_SPINFIRE: // Elemental Shield flame balls
|
||||
case MT_SPIKE: // Floor Spike
|
||||
// Is the object hang from the ceiling?
|
||||
// In that case, swap the planes used.
|
||||
// verticalflip inverts
|
||||
if (!!(mo->flags & MF_SPAWNCEILING) ^ !!(mo->eflags & MFE_VERTICALFLIP))
|
||||
{
|
||||
if (sectorisffloor && !sectorisquicksand)
|
||||
mo->z = mo->ceilingz - mo->height;
|
||||
else
|
||||
mo->z = mo->ceilingz = mo->subsector->sector->ceilingheight - mo->height;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sectorisffloor && !sectorisquicksand)
|
||||
mo->z = mo->floorz;
|
||||
else
|
||||
mo->z = mo->floorz = mo->subsector->sector->floorheight;
|
||||
}
|
||||
break;
|
||||
// Kill warnings...
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Break from loop if there is no FOFs to check.
|
||||
if (!sectorisffloor)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
|
|
@ -872,7 +872,6 @@ static void P_InitializeSector(sector_t *ss)
|
|||
|
||||
ss->linecount = 0;
|
||||
ss->lines = NULL;
|
||||
ss->tagline = NULL;
|
||||
|
||||
ss->ffloors = NULL;
|
||||
ss->attached = NULL;
|
||||
|
|
|
@ -5772,8 +5772,6 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, f
|
|||
sec2->floorheight = tempceiling;
|
||||
}
|
||||
|
||||
sec2->tagline = master;
|
||||
|
||||
if (sec2->numattached == 0)
|
||||
{
|
||||
sec2->attached = Z_Malloc(sizeof (*sec2->attached) * sec2->maxattached, PU_STATIC, NULL);
|
||||
|
|
|
@ -328,11 +328,6 @@ typedef struct sector_s
|
|||
|
||||
size_t linecount;
|
||||
struct line_s **lines; // [linecount] size
|
||||
// Hack: store special line tagging to some sectors
|
||||
// to efficiently help work around bugs by directly
|
||||
// referencing the specific line that the problem happens in.
|
||||
// (used in T_MovePlane mobj physics)
|
||||
struct line_s *tagline;
|
||||
|
||||
// Improved fake floor hack
|
||||
ffloor_t *ffloors;
|
||||
|
|
Loading…
Reference in a new issue