Add per-texture offset and scale fields and parsing to side_t.

This commit is contained in:
Nev3r 2020-04-22 09:27:41 +02:00
parent 3d9d9d74f6
commit 1fa8acd70f
2 changed files with 33 additions and 0 deletions

View file

@ -1116,6 +1116,9 @@ static void P_LoadSidedefs(UINT8 *data)
}
sd->rowoffset = SHORT(msd->rowoffset)<<FRACBITS;
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;
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)

View file

@ -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;