From a1b2a0a3444e9d58cad3f4945bfcc810adf587b7 Mon Sep 17 00:00:00 2001 From: Nev3r Date: Tue, 11 Jun 2019 14:47:58 +0200 Subject: [PATCH] Properly take skybox viewpoint angle into account. --- src/r_portal.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/r_portal.c b/src/r_portal.c index 8456a50b5..ea24cd91c 100644 --- a/src/r_portal.c +++ b/src/r_portal.c @@ -279,6 +279,7 @@ void Portal_AddSkybox (const visplane_t* plane) if (skyboxmo[1]) { fixed_t x = 0, y = 0; + angle_t ang = skyboxmo[0]->angle>>ANGLETOFINESHIFT; if (mh->skybox_scalex > 0) x = (viewx - skyboxmo[1]->x) / mh->skybox_scalex; @@ -290,8 +291,9 @@ void Portal_AddSkybox (const visplane_t* plane) else if (mh->skybox_scaley < 0) y = (viewy - skyboxmo[1]->y) * -mh->skybox_scaley; - portal->viewx += x; - portal->viewy += y; + // Apply transform to account for the skybox viewport angle. + portal->viewx += FixedMul(x,FINECOSINE(ang)) - FixedMul(y, FINESINE(ang)); + portal->viewy += FixedMul(x, FINESINE(ang)) + FixedMul(y,FINECOSINE(ang)); } if (mh->skybox_scalez > 0)