mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 21:01:04 +00:00
Fix move by waypoints not checking for sector changes
It seemed weird at first, but the polyobject sector (backsector) itself DOESN'T need checked (although I still am doing it for safety). Rather, the in-level sector just needs checked. If someone manually modifies the polyobject sector though, then this bug can still occur... but this fixes it for the most common use-case where this can happen. I'll try to tackle the rarer cases in my next commit.
This commit is contained in:
parent
140152c2e7
commit
878b1b2d16
1 changed files with 12 additions and 0 deletions
|
@ -1859,6 +1859,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
|
|||
diffz = po->lines[0]->backsector->floorheight - (target->z - amtz);
|
||||
po->lines[0]->backsector->floorheight = target->z - amtz;
|
||||
po->lines[0]->backsector->ceilingheight = target->z + amtz;
|
||||
// Sal: Remember to check your sectors!
|
||||
P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage));
|
||||
P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage));
|
||||
// Apply action to mirroring polyobjects as well
|
||||
start = 0;
|
||||
while ((po = Polyobj_GetChild(oldpo, &start)))
|
||||
|
@ -1870,6 +1873,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
|
|||
// TODO: use T_MovePlane
|
||||
po->lines[0]->backsector->floorheight += diffz; // move up/down by same amount as the parent did
|
||||
po->lines[0]->backsector->ceilingheight += diffz;
|
||||
// Sal: Remember to check your sectors!
|
||||
P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage));
|
||||
P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage));
|
||||
}
|
||||
|
||||
po = oldpo;
|
||||
|
@ -2030,6 +2036,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
|
|||
// TODO: use T_MovePlane
|
||||
po->lines[0]->backsector->floorheight += momz;
|
||||
po->lines[0]->backsector->ceilingheight += momz;
|
||||
// Sal: Remember to check your sectors!
|
||||
P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage)); // frontsector is NEEDED for crushing
|
||||
P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage)); // backsector may not be necessary, but just in case
|
||||
|
||||
// Apply action to mirroring polyobjects as well
|
||||
start = 0;
|
||||
|
@ -2042,6 +2051,9 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
|
|||
// TODO: use T_MovePlane
|
||||
po->lines[0]->backsector->floorheight += momz;
|
||||
po->lines[0]->backsector->ceilingheight += momz;
|
||||
// Sal: Remember to check your sectors!
|
||||
P_CheckSector(po->lines[0]->frontsector, (boolean)(po->damage));
|
||||
P_CheckSector(po->lines[0]->backsector, (boolean)(po->damage));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue