fix portals not accounting for slopes (only for kartmaps)

fixes the last portal paths on ante station
This commit is contained in:
Alug 2025-06-08 22:07:30 +02:00
parent e63f68e732
commit cd3715bfaa

View file

@ -165,6 +165,13 @@ void Portal_Add2Lines (const INT32 line1, const INT32 line2, const INT32 x1, con
vertex_t dest_c, start_c;
if (mapnamespace == MNS_SRB2KART)
{
portal->viewx = viewx;
portal->viewy = viewy;
portal->viewz = viewz;
}
// looking glass center
start_c.x = (start->v1->x + start->v2->x) / 2;
start_c.y = (start->v1->y + start->v2->y) / 2;
@ -173,13 +180,24 @@ void Portal_Add2Lines (const INT32 line1, const INT32 line2, const INT32 x1, con
dest_c.x = (dest->v1->x + dest->v2->x) / 2;
dest_c.y = (dest->v1->y + dest->v2->y) / 2;
disttopoint = R_PointToDist2(start_c.x, start_c.y, viewx, viewy);
angtopoint = R_PointToAngle2(start_c.x, start_c.y, viewx, viewy);
angtopoint += dangle;
portal->viewx = dest_c.x + FixedMul(FINECOSINE(angtopoint>>ANGLETOFINESHIFT), disttopoint);
portal->viewy = dest_c.y + FixedMul(FINESINE(angtopoint>>ANGLETOFINESHIFT), disttopoint);
portal->viewz = viewz + dest->frontsector->floorheight - start->frontsector->floorheight;
if ((dangle == 0) && (mapnamespace == MNS_SRB2KART))
{
// the entrance goes straight opposite the exit, so we just need to mess with the offset.
portal->viewx += dest_c.x - start_c.x;
portal->viewy += dest_c.y - start_c.y;
}
else
{
disttopoint = R_PointToDist2(start_c.x, start_c.y, viewx, viewy);
angtopoint = R_PointToAngle2(start_c.x, start_c.y, viewx, viewy);
angtopoint += dangle;
portal->viewx = dest_c.x + FixedMul(FINECOSINE(angtopoint>>ANGLETOFINESHIFT), disttopoint);
portal->viewy = dest_c.y + FixedMul(FINESINE(angtopoint>>ANGLETOFINESHIFT), disttopoint);
}
portal->viewangle = viewangle + dangle;
portal->clipline = line2;