diff --git a/src/p_setup.c b/src/p_setup.c index c836f671a..feb91f9f0 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -1116,6 +1116,9 @@ static void P_LoadSidedefs(UINT8 *data) } sd->rowoffset = SHORT(msd->rowoffset)<topscale.x = sd->topscale.y = sd->midscale.x = sd->midscale.y = sd->botscale.x = sd->botscale.y = FRACUNIT; + sd->topoffset.x = sd->topoffset.y = sd->midoffset.x = sd->midoffset.y = sd->botoffset.x = sd->botoffset.y = 0; + P_SetSidedefSector(i, SHORT(msd->sector)); // Special info stored in texture fields! @@ -1489,6 +1492,30 @@ static void ParseTextmapSidedefParameter(UINT32 i, char *param, char *val) P_SetSidedefSector(i, atol(val)); else if (fastcmp(param, "repeatcnt")) sides[i].repeatcnt = atol(val); + else if (fastcmp(param, "scalex_top")) + sides[i].topscale.x = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "scaley_top")) + sides[i].topscale.y = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "scalex_mid")) + sides[i].midscale.x = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "scaley_mid")) + sides[i].midscale.y = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "scalex_bottom")) + sides[i].botscale.x = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "scaley_bottom")) + sides[i].botscale.y = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "offsetx_top")) + sides[i].topoffset.x = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "offsety_top")) + sides[i].topoffset.y = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "offsetx_mid")) + sides[i].midoffset.x = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "offsety_mid")) + sides[i].midoffset.y = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "offsetx_bottom")) + sides[i].botoffset.x = FLOAT_TO_FIXED(atof(val)); + else if (fastcmp(param, "offsety_bottom")) + sides[i].botoffset.y = FLOAT_TO_FIXED(atof(val)); } static void ParseTextmapLinedefParameter(UINT32 i, char *param, char *val) @@ -1767,6 +1794,9 @@ static void P_LoadTextmap(void) sd->sector = NULL; sd->repeatcnt = 0; + sd->topscale.x = sd->topscale.y = sd->midscale.x = sd->midscale.y = sd->botscale.x = sd->botscale.y = FRACUNIT; + sd->topoffset.x = sd->topoffset.y = sd->midoffset.x = sd->midoffset.y = sd->botoffset.x = sd->botoffset.y = 0; + TextmapParse(sidesPos[i], i, ParseTextmapSidedefParameter); if (!sd->sector) diff --git a/src/r_defs.h b/src/r_defs.h index 8ddba31f7..13bc01b92 100644 --- a/src/r_defs.h +++ b/src/r_defs.h @@ -447,6 +447,9 @@ typedef struct // add this to the calculated texture top fixed_t rowoffset; + vector2_t topscale, botscale, midscale; + vector2_t topoffset, botoffset, midoffset; + // Texture indices. // We do not maintain names here. INT32 toptexture, bottomtexture, midtexture;