From 05a97530c18a5f8e87fc47d27187b6a3a3542eb5 Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Mon, 30 Dec 2019 17:28:10 +0100
Subject: [PATCH] Add support for flat offset and rotation fields in UDMF

---
 src/p_setup.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/p_setup.c b/src/p_setup.c
index 4d4eaff6d0..e4b73570fa 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -1338,6 +1338,18 @@ static void ParseTextmapSectorParameter(UINT32 i, char *param)
 		sectors[i].special = atol(dat = M_GetToken(NULL));
 	else if (fastcmp(param, "id"))
 		sectors[i].tag = atol(dat = M_GetToken(NULL));
+	else if (fastcmp(param, "xpanningfloor"))
+		sectors[i].floor_xoffs = FLOAT_TO_FIXED(atof(dat = M_GetToken(NULL)));
+	else if (fastcmp(param, "ypanningfloor"))
+		sectors[i].floor_yoffs = FLOAT_TO_FIXED(atof(dat = M_GetToken(NULL)));
+	else if (fastcmp(param, "xpanningceiling"))
+		sectors[i].ceiling_xoffs = FLOAT_TO_FIXED(atof(dat = M_GetToken(NULL)));
+	else if (fastcmp(param, "ypanningceiling"))
+		sectors[i].ceiling_yoffs = FLOAT_TO_FIXED(atof(dat = M_GetToken(NULL)));
+	else if (fastcmp(param, "rotationfloor"))
+		sectors[i].floorpic_angle = FixedAngle(FLOAT_TO_FIXED(atof(dat = M_GetToken(NULL))));
+	else if (fastcmp(param, "rotationceiling"))
+		sectors[i].ceilingpic_angle = FixedAngle(FLOAT_TO_FIXED(atof(dat = M_GetToken(NULL))));
 }
 
 static void ParseTextmapSidedefParameter(UINT32 i, char *param)
@@ -1536,12 +1548,8 @@ static void P_LoadTextmap(void)
 		sc->special = 0;
 		sc->tag = 0;
 
-		sc->floor_xoffs = sc->floor_yoffs = sc->ceiling_xoffs = sc->ceiling_yoffs = 0;
-		sc->floorpic_angle = sc->ceilingpic_angle = 0;
-
-		TextmapParse(sectorsPos[i], i, ParseTextmapSectorParameter);
-
 		P_InitializeSector(sc);
+		TextmapParse(sectorsPos[i], i, ParseTextmapSectorParameter);
 		TextmapFixFlatOffsets(sc);
 	}
 
-- 
GitLab