From a1b2a0a3444e9d58cad3f4945bfcc810adf587b7 Mon Sep 17 00:00:00 2001
From: Nev3r <apophycens@gmail.com>
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 8456a50b5a..ea24cd91c4 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)
-- 
GitLab