mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-23 11:21:01 +00:00
Add sector texture scale fields
This commit is contained in:
parent
2e4fab3f1a
commit
468b448316
9 changed files with 143 additions and 27 deletions
|
@ -35,10 +35,14 @@ enum sector_e {
|
|||
sector_floorpic,
|
||||
sector_floorxoffset,
|
||||
sector_flooryoffset,
|
||||
sector_floorxscale,
|
||||
sector_flooryscale,
|
||||
sector_floorangle,
|
||||
sector_ceilingpic,
|
||||
sector_ceilingxoffset,
|
||||
sector_ceilingyoffset,
|
||||
sector_ceilingxscale,
|
||||
sector_ceilingyscale,
|
||||
sector_ceilingangle,
|
||||
sector_lightlevel,
|
||||
sector_floorlightlevel,
|
||||
|
@ -73,10 +77,14 @@ static const char *const sector_opt[] = {
|
|||
"floorpic",
|
||||
"floorxoffset",
|
||||
"flooryoffset",
|
||||
"floorxscale",
|
||||
"flooryscale",
|
||||
"floorangle",
|
||||
"ceilingpic",
|
||||
"ceilingxoffset",
|
||||
"ceilingyoffset",
|
||||
"ceilingxscale",
|
||||
"ceilingyscale",
|
||||
"ceilingangle",
|
||||
"lightlevel",
|
||||
"floorlightlevel",
|
||||
|
@ -666,20 +674,20 @@ static int sector_get(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
case sector_floorxoffset:
|
||||
{
|
||||
lua_pushfixed(L, sector->floorxoffset);
|
||||
return 1;
|
||||
}
|
||||
case sector_flooryoffset:
|
||||
{
|
||||
lua_pushfixed(L, sector->flooryoffset);
|
||||
return 1;
|
||||
}
|
||||
case sector_floorxscale:
|
||||
lua_pushfixed(L, sector->floorxscale);
|
||||
return 1;
|
||||
case sector_flooryscale:
|
||||
lua_pushfixed(L, sector->flooryscale);
|
||||
return 1;
|
||||
case sector_floorangle:
|
||||
{
|
||||
lua_pushangle(L, sector->floorangle);
|
||||
return 1;
|
||||
}
|
||||
case sector_ceilingpic: // ceilingpic
|
||||
{
|
||||
levelflat_t *levelflat = &levelflats[sector->ceilingpic];
|
||||
|
@ -690,20 +698,20 @@ static int sector_get(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
case sector_ceilingxoffset:
|
||||
{
|
||||
lua_pushfixed(L, sector->ceilingxoffset);
|
||||
return 1;
|
||||
}
|
||||
case sector_ceilingyoffset:
|
||||
{
|
||||
lua_pushfixed(L, sector->ceilingyoffset);
|
||||
return 1;
|
||||
}
|
||||
case sector_ceilingxscale:
|
||||
lua_pushfixed(L, sector->ceilingxscale);
|
||||
return 1;
|
||||
case sector_ceilingyscale:
|
||||
lua_pushfixed(L, sector->ceilingyscale);
|
||||
return 1;
|
||||
case sector_ceilingangle:
|
||||
{
|
||||
lua_pushangle(L, sector->ceilingangle);
|
||||
return 1;
|
||||
}
|
||||
case sector_lightlevel:
|
||||
lua_pushinteger(L, sector->lightlevel);
|
||||
return 1;
|
||||
|
@ -852,6 +860,12 @@ static int sector_set(lua_State *L)
|
|||
case sector_flooryoffset:
|
||||
sector->flooryoffset = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case sector_floorxscale:
|
||||
sector->floorxscale = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case sector_flooryscale:
|
||||
sector->flooryscale = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case sector_floorangle:
|
||||
sector->floorangle = luaL_checkangle(L, 3);
|
||||
break;
|
||||
|
@ -864,6 +878,12 @@ static int sector_set(lua_State *L)
|
|||
case sector_ceilingyoffset:
|
||||
sector->ceilingyoffset = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case sector_ceilingxscale:
|
||||
sector->ceilingxscale = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case sector_ceilingyscale:
|
||||
sector->ceilingyscale = luaL_checkfixed(L, 3);
|
||||
break;
|
||||
case sector_ceilingangle:
|
||||
sector->ceilingangle = luaL_checkangle(L, 3);
|
||||
break;
|
||||
|
|
|
@ -867,6 +867,10 @@ static void P_NetUnArchiveWaypoints(void)
|
|||
#define SD_TRIGGERTAG 0x02
|
||||
#define SD_TRIGGERER 0x04
|
||||
#define SD_GRAVITY 0x08
|
||||
#define SD_FXSCALE 0x10
|
||||
#define SD_FYSCALE 0x20
|
||||
#define SD_CXSCALE 0x40
|
||||
#define SD_CYSCALE 0x80
|
||||
|
||||
#define LD_FLAG 0x01
|
||||
#define LD_SPECIAL 0x02
|
||||
|
@ -1054,6 +1058,14 @@ static void ArchiveSectors(void)
|
|||
diff2 |= SD_CXOFFS;
|
||||
if (ss->ceilingyoffset != spawnss->ceilingyoffset)
|
||||
diff2 |= SD_CYOFFS;
|
||||
if (ss->floorxscale != spawnss->floorxscale)
|
||||
diff2 |= SD_FXSCALE;
|
||||
if (ss->flooryscale != spawnss->flooryscale)
|
||||
diff2 |= SD_FYSCALE;
|
||||
if (ss->ceilingxscale != spawnss->ceilingxscale)
|
||||
diff2 |= SD_CXSCALE;
|
||||
if (ss->ceilingyscale != spawnss->ceilingyscale)
|
||||
diff2 |= SD_CYSCALE;
|
||||
if (ss->floorangle != spawnss->floorangle)
|
||||
diff2 |= SD_FLOORANG;
|
||||
if (ss->ceilingangle != spawnss->ceilingangle)
|
||||
|
@ -1164,6 +1176,14 @@ static void ArchiveSectors(void)
|
|||
WRITEUINT8(save_p, ss->triggerer);
|
||||
if (diff4 & SD_GRAVITY)
|
||||
WRITEFIXED(save_p, ss->gravity);
|
||||
if (diff4 & SD_FXSCALE)
|
||||
WRITEFIXED(save_p, ss->floorxscale);
|
||||
if (diff4 & SD_FYSCALE)
|
||||
WRITEFIXED(save_p, ss->flooryscale);
|
||||
if (diff4 & SD_CXSCALE)
|
||||
WRITEFIXED(save_p, ss->ceilingxscale);
|
||||
if (diff4 & SD_CYSCALE)
|
||||
WRITEFIXED(save_p, ss->ceilingyscale);
|
||||
if (diff & SD_FFLOORS)
|
||||
ArchiveFFloors(ss);
|
||||
}
|
||||
|
@ -1284,6 +1304,14 @@ static void UnArchiveSectors(void)
|
|||
sectors[i].triggerer = READUINT8(save_p);
|
||||
if (diff4 & SD_GRAVITY)
|
||||
sectors[i].gravity = READFIXED(save_p);
|
||||
if (diff4 & SD_FXSCALE)
|
||||
sectors[i].floorxscale = READFIXED(save_p);
|
||||
if (diff4 & SD_FYSCALE)
|
||||
sectors[i].flooryscale = READFIXED(save_p);
|
||||
if (diff4 & SD_CXSCALE)
|
||||
sectors[i].ceilingxscale = READFIXED(save_p);
|
||||
if (diff4 & SD_CYSCALE)
|
||||
sectors[i].ceilingyscale = READFIXED(save_p);
|
||||
|
||||
if (diff & SD_FFLOORS)
|
||||
UnArchiveFFloors(§ors[i]);
|
||||
|
|
|
@ -1055,6 +1055,9 @@ static void P_LoadSectors(UINT8 *data)
|
|||
ss->floorxoffset = ss->flooryoffset = 0;
|
||||
ss->ceilingxoffset = ss->ceilingyoffset = 0;
|
||||
|
||||
ss->floorxscale = ss->flooryscale = FRACUNIT;
|
||||
ss->ceilingxscale = ss->ceilingyscale = FRACUNIT;
|
||||
|
||||
ss->floorangle = ss->ceilingangle = 0;
|
||||
|
||||
ss->floorlightlevel = ss->ceilinglightlevel = 0;
|
||||
|
@ -1691,6 +1694,14 @@ static void ParseTextmapSectorParameter(UINT32 i, const char *param, const char
|
|||
sectors[i].ceilingxoffset = FLOAT_TO_FIXED(atof(val));
|
||||
else if (fastcmp(param, "ypanningceiling"))
|
||||
sectors[i].ceilingyoffset = FLOAT_TO_FIXED(atof(val));
|
||||
else if (fastcmp(param, "xscalefloor"))
|
||||
sectors[i].floorxscale = FLOAT_TO_FIXED(atof(val));
|
||||
else if (fastcmp(param, "yscalefloor"))
|
||||
sectors[i].flooryscale = FLOAT_TO_FIXED(atof(val));
|
||||
else if (fastcmp(param, "xscaleceiling"))
|
||||
sectors[i].ceilingxscale = FLOAT_TO_FIXED(atof(val));
|
||||
else if (fastcmp(param, "yscaleceiling"))
|
||||
sectors[i].ceilingyscale = FLOAT_TO_FIXED(atof(val));
|
||||
else if (fastcmp(param, "rotationfloor"))
|
||||
sectors[i].floorangle = FixedAngle(FLOAT_TO_FIXED(atof(val)));
|
||||
else if (fastcmp(param, "rotationceiling"))
|
||||
|
@ -2680,6 +2691,14 @@ static void P_WriteTextmap(void)
|
|||
fprintf(f, "xpanningceiling = %f;\n", FIXED_TO_FLOAT(tempsec.ceilingxoffset));
|
||||
if (tempsec.ceilingyoffset != 0)
|
||||
fprintf(f, "ypanningceiling = %f;\n", FIXED_TO_FLOAT(tempsec.ceilingyoffset));
|
||||
if (tempsec.floorxscale != 0)
|
||||
fprintf(f, "xscalefloor = %f;\n", FIXED_TO_FLOAT(tempsec.floorxscale));
|
||||
if (tempsec.flooryscale != 0)
|
||||
fprintf(f, "yscalefloor = %f;\n", FIXED_TO_FLOAT(tempsec.flooryscale));
|
||||
if (tempsec.ceilingxscale != 0)
|
||||
fprintf(f, "xscaleceiling = %f;\n", FIXED_TO_FLOAT(tempsec.ceilingxscale));
|
||||
if (tempsec.ceilingyscale != 0)
|
||||
fprintf(f, "yscaleceiling = %f;\n", FIXED_TO_FLOAT(tempsec.ceilingyscale));
|
||||
if (wsectors[i].floorangle != 0)
|
||||
fprintf(f, "rotationfloor = %f;\n", FIXED_TO_FLOAT(AngleFixed(wsectors[i].floorangle)));
|
||||
if (wsectors[i].ceilingangle != 0)
|
||||
|
@ -2915,6 +2934,9 @@ static void P_LoadTextmap(void)
|
|||
sc->floorxoffset = sc->flooryoffset = 0;
|
||||
sc->ceilingxoffset = sc->ceilingyoffset = 0;
|
||||
|
||||
sc->floorxscale = sc->flooryscale = FRACUNIT;
|
||||
sc->ceilingxscale = sc->ceilingyscale = FRACUNIT;
|
||||
|
||||
sc->floorangle = sc->ceilingangle = 0;
|
||||
|
||||
sc->floorlightlevel = sc->ceilinglightlevel = 0;
|
||||
|
|
|
@ -5597,6 +5597,8 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, I
|
|||
fflr->bottompic = &sec2->floorpic;
|
||||
fflr->bottomxoffs = &sec2->floorxoffset;
|
||||
fflr->bottomyoffs = &sec2->flooryoffset;
|
||||
fflr->bottomxscale = &sec2->floorxscale;
|
||||
fflr->bottomyscale = &sec2->flooryscale;
|
||||
fflr->bottomangle = &sec2->floorangle;
|
||||
|
||||
// Add the ceiling
|
||||
|
@ -5605,6 +5607,8 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, I
|
|||
fflr->toplightlevel = &sec2->lightlevel;
|
||||
fflr->topxoffs = &sec2->ceilingxoffset;
|
||||
fflr->topyoffs = &sec2->ceilingyoffset;
|
||||
fflr->topxscale = &sec2->ceilingxscale;
|
||||
fflr->topyscale = &sec2->ceilingyscale;
|
||||
fflr->topangle = &sec2->ceilingangle;
|
||||
|
||||
// Add slopes
|
||||
|
|
44
src/r_bsp.c
44
src/r_bsp.c
|
@ -277,6 +277,8 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, INT32 *floorlightlevel,
|
|||
tempsec->floorpic = s->floorpic;
|
||||
tempsec->floorxoffset = s->floorxoffset;
|
||||
tempsec->flooryoffset = s->flooryoffset;
|
||||
tempsec->floorxscale = s->floorxscale;
|
||||
tempsec->flooryscale = s->flooryscale;
|
||||
tempsec->floorangle = s->floorangle;
|
||||
|
||||
if (underwater)
|
||||
|
@ -287,6 +289,8 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, INT32 *floorlightlevel,
|
|||
tempsec->ceilingpic = tempsec->floorpic;
|
||||
tempsec->ceilingxoffset = tempsec->floorxoffset;
|
||||
tempsec->ceilingyoffset = tempsec->flooryoffset;
|
||||
tempsec->ceilingxscale = tempsec->floorxscale;
|
||||
tempsec->ceilingyscale = tempsec->flooryscale;
|
||||
tempsec->ceilingangle = tempsec->floorangle;
|
||||
}
|
||||
else
|
||||
|
@ -294,6 +298,8 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, INT32 *floorlightlevel,
|
|||
tempsec->ceilingpic = s->ceilingpic;
|
||||
tempsec->ceilingxoffset = s->ceilingxoffset;
|
||||
tempsec->ceilingyoffset = s->ceilingyoffset;
|
||||
tempsec->ceilingxscale = s->ceilingxscale;
|
||||
tempsec->ceilingyscale = s->ceilingyscale;
|
||||
tempsec->ceilingangle = s->ceilingangle;
|
||||
}
|
||||
}
|
||||
|
@ -317,6 +323,8 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, INT32 *floorlightlevel,
|
|||
tempsec->floorpic = tempsec->ceilingpic = s->ceilingpic;
|
||||
tempsec->floorxoffset = tempsec->ceilingxoffset = s->ceilingxoffset;
|
||||
tempsec->flooryoffset = tempsec->ceilingyoffset = s->ceilingyoffset;
|
||||
tempsec->floorxscale = tempsec->ceilingxscale = s->ceilingxscale;
|
||||
tempsec->flooryscale = tempsec->ceilingyscale = s->ceilingyscale;
|
||||
tempsec->floorangle = tempsec->ceilingangle = s->ceilingangle;
|
||||
|
||||
if (s->floorpic == skyflatnum) // SKYFIX?
|
||||
|
@ -325,6 +333,8 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, INT32 *floorlightlevel,
|
|||
tempsec->floorpic = tempsec->ceilingpic;
|
||||
tempsec->floorxoffset = tempsec->ceilingxoffset;
|
||||
tempsec->flooryoffset = tempsec->ceilingyoffset;
|
||||
tempsec->floorxscale = tempsec->ceilingxscale;
|
||||
tempsec->flooryscale = tempsec->ceilingyscale;
|
||||
tempsec->floorangle = tempsec->ceilingangle;
|
||||
}
|
||||
else
|
||||
|
@ -333,6 +343,8 @@ sector_t *R_FakeFlat(sector_t *sec, sector_t *tempsec, INT32 *floorlightlevel,
|
|||
tempsec->floorpic = s->floorpic;
|
||||
tempsec->floorxoffset = s->floorxoffset;
|
||||
tempsec->flooryoffset = s->flooryoffset;
|
||||
tempsec->floorxscale = s->floorxscale;
|
||||
tempsec->flooryscale = s->flooryscale;
|
||||
tempsec->floorangle = s->floorangle;
|
||||
}
|
||||
|
||||
|
@ -362,12 +374,16 @@ boolean R_IsEmptyLine(seg_t *line, sector_t *front, sector_t *back)
|
|||
&& back->c_slope == front->c_slope
|
||||
&& back->lightlevel == front->lightlevel
|
||||
&& !line->sidedef->midtexture
|
||||
// Check offsets too!
|
||||
// Check offsets and scale too!
|
||||
&& back->floorxoffset == front->floorxoffset
|
||||
&& back->flooryoffset == front->flooryoffset
|
||||
&& back->floorxscale == front->floorxscale
|
||||
&& back->flooryscale == front->flooryscale
|
||||
&& back->floorangle == front->floorangle
|
||||
&& back->ceilingxoffset == front->ceilingxoffset
|
||||
&& back->ceilingyoffset == front->ceilingyoffset
|
||||
&& back->ceilingxscale == front->ceilingxscale
|
||||
&& back->ceilingyscale == front->ceilingyscale
|
||||
&& back->ceilingangle == front->ceilingangle
|
||||
// Consider altered lighting.
|
||||
&& back->floorlightlevel == front->floorlightlevel
|
||||
|
@ -909,7 +925,9 @@ static void R_Subsector(size_t num)
|
|||
|| (frontsector->heightsec != -1 && sectors[frontsector->heightsec].ceilingpic == skyflatnum))
|
||||
{
|
||||
floorplane = R_FindPlane(frontsector->floorheight, frontsector->floorpic, floorlightlevel,
|
||||
frontsector->floorxoffset, frontsector->flooryoffset, frontsector->floorangle, floorcolormap, NULL, NULL, frontsector->f_slope);
|
||||
frontsector->floorxoffset, frontsector->flooryoffset,
|
||||
frontsector->floorxscale, frontsector->flooryscale, frontsector->floorangle,
|
||||
floorcolormap, NULL, NULL, frontsector->f_slope);
|
||||
}
|
||||
else
|
||||
floorplane = NULL;
|
||||
|
@ -918,8 +936,9 @@ static void R_Subsector(size_t num)
|
|||
|| frontsector->ceilingpic == skyflatnum
|
||||
|| (frontsector->heightsec != -1 && sectors[frontsector->heightsec].floorpic == skyflatnum))
|
||||
{
|
||||
ceilingplane = R_FindPlane(frontsector->ceilingheight, frontsector->ceilingpic,
|
||||
ceilinglightlevel, frontsector->ceilingxoffset, frontsector->ceilingyoffset, frontsector->ceilingangle,
|
||||
ceilingplane = R_FindPlane(frontsector->ceilingheight, frontsector->ceilingpic, ceilinglightlevel,
|
||||
frontsector->ceilingxoffset, frontsector->ceilingyoffset,
|
||||
frontsector->ceilingxscale, frontsector->ceilingyscale, frontsector->ceilingangle,
|
||||
ceilingcolormap, NULL, NULL, frontsector->c_slope);
|
||||
}
|
||||
else
|
||||
|
@ -962,8 +981,9 @@ static void R_Subsector(size_t num)
|
|||
viewz < heightcheck);
|
||||
|
||||
ffloor[numffloors].plane = R_FindPlane(*rover->bottomheight, *rover->bottompic,
|
||||
*frontsector->lightlist[light].lightlevel, *rover->bottomxoffs,
|
||||
*rover->bottomyoffs, *rover->bottomangle, *frontsector->lightlist[light].extra_colormap, rover, NULL, *rover->b_slope);
|
||||
*frontsector->lightlist[light].lightlevel, *rover->bottomxoffs, *rover->bottomyoffs,
|
||||
*rover->bottomxscale, *rover->bottomyscale, *rover->bottomangle,
|
||||
*frontsector->lightlist[light].extra_colormap, rover, NULL, *rover->b_slope);
|
||||
|
||||
ffloor[numffloors].slope = *rover->b_slope;
|
||||
|
||||
|
@ -991,7 +1011,8 @@ static void R_Subsector(size_t num)
|
|||
light = R_GetPlaneLight(frontsector, planecenterz, viewz < heightcheck);
|
||||
|
||||
ffloor[numffloors].plane = R_FindPlane(*rover->topheight, *rover->toppic,
|
||||
*frontsector->lightlist[light].lightlevel, *rover->topxoffs, *rover->topyoffs, *rover->topangle,
|
||||
*frontsector->lightlist[light].lightlevel, *rover->topxoffs, *rover->topyoffs,
|
||||
*rover->topxscale, *rover->topyscale, *rover->topangle,
|
||||
*frontsector->lightlist[light].extra_colormap, rover, NULL, *rover->t_slope);
|
||||
|
||||
ffloor[numffloors].slope = *rover->t_slope;
|
||||
|
@ -1033,7 +1054,9 @@ static void R_Subsector(size_t num)
|
|||
{
|
||||
light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight);
|
||||
ffloor[numffloors].plane = R_FindPlane(polysec->floorheight, polysec->floorpic,
|
||||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->floorxoffset, polysec->flooryoffset,
|
||||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel),
|
||||
polysec->floorxoffset, polysec->flooryoffset,
|
||||
polysec->floorxscale, polysec->flooryscale,
|
||||
polysec->floorangle-po->angle,
|
||||
(light == -1 ? frontsector->extra_colormap : *frontsector->lightlist[light].extra_colormap), NULL, po,
|
||||
NULL); // will ffloors be slopable eventually?
|
||||
|
@ -1057,7 +1080,10 @@ static void R_Subsector(size_t num)
|
|||
{
|
||||
light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight);
|
||||
ffloor[numffloors].plane = R_FindPlane(polysec->ceilingheight, polysec->ceilingpic,
|
||||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->ceilingxoffset, polysec->ceilingyoffset, polysec->ceilingangle-po->angle,
|
||||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel),
|
||||
polysec->ceilingxoffset, polysec->ceilingyoffset,
|
||||
polysec->ceilingxscale, polysec->ceilingyscale,
|
||||
polysec->ceilingangle-po->angle,
|
||||
(light == -1 ? frontsector->extra_colormap : *frontsector->lightlist[light].extra_colormap), NULL, po,
|
||||
NULL); // will ffloors be slopable eventually?
|
||||
|
||||
|
|
|
@ -215,12 +215,16 @@ typedef struct ffloor_s
|
|||
INT16 *toplightlevel;
|
||||
fixed_t *topxoffs;
|
||||
fixed_t *topyoffs;
|
||||
fixed_t *topxscale;
|
||||
fixed_t *topyscale;
|
||||
angle_t *topangle;
|
||||
|
||||
fixed_t *bottomheight;
|
||||
INT32 *bottompic;
|
||||
fixed_t *bottomxoffs;
|
||||
fixed_t *bottomyoffs;
|
||||
fixed_t *bottomxscale;
|
||||
fixed_t *bottomyscale;
|
||||
angle_t *bottomangle;
|
||||
|
||||
// Pointers to pointers. Yup.
|
||||
|
@ -426,6 +430,10 @@ typedef struct sector_s
|
|||
fixed_t floorxoffset, flooryoffset;
|
||||
fixed_t ceilingxoffset, ceilingyoffset;
|
||||
|
||||
// floor and ceiling texture scale
|
||||
fixed_t floorxscale, flooryscale;
|
||||
fixed_t ceilingxscale, ceilingyscale;
|
||||
|
||||
// flat angle
|
||||
angle_t floorangle;
|
||||
angle_t ceilingangle;
|
||||
|
|
|
@ -391,7 +391,8 @@ static visplane_t *new_visplane(unsigned hash)
|
|||
// If not, allocates another of them.
|
||||
//
|
||||
visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
||||
fixed_t xoff, fixed_t yoff, angle_t plangle, extracolormap_t *planecolormap,
|
||||
fixed_t xoff, fixed_t yoff, fixed_t xscale, fixed_t yscale,
|
||||
angle_t plangle, extracolormap_t *planecolormap,
|
||||
ffloor_t *pfloor, polyobj_t *polyobj, pslope_t *slope)
|
||||
{
|
||||
visplane_t *check;
|
||||
|
@ -401,6 +402,7 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
|||
{
|
||||
xoff += viewx;
|
||||
yoff -= viewy;
|
||||
|
||||
if (plangle != 0)
|
||||
{
|
||||
// Add the view offset, rotated by the plane angle.
|
||||
|
@ -429,6 +431,9 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
|||
}
|
||||
}
|
||||
|
||||
(void)xscale;
|
||||
(void)yscale;
|
||||
|
||||
// This appears to fix the Nimbus Ruins sky bug.
|
||||
if (picnum == skyflatnum && pfloor)
|
||||
{
|
||||
|
@ -441,8 +446,6 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
|||
hash = visplane_hash(picnum, lightlevel, height);
|
||||
for (check = visplanes[hash]; check; check = check->next)
|
||||
{
|
||||
if (polyobj != check->polyobj)
|
||||
continue;
|
||||
if (height == check->height && picnum == check->picnum
|
||||
&& lightlevel == check->lightlevel
|
||||
&& xoff == check->xoffs && yoff == check->yoffs
|
||||
|
@ -450,7 +453,8 @@ visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel,
|
|||
&& check->viewx == viewx && check->viewy == viewy && check->viewz == viewz
|
||||
&& check->viewangle == viewangle
|
||||
&& check->plangle == plangle
|
||||
&& check->slope == slope)
|
||||
&& check->slope == slope
|
||||
&& check->polyobj == polyobj)
|
||||
{
|
||||
return check;
|
||||
}
|
||||
|
|
|
@ -75,8 +75,8 @@ void R_ClearPlanes(void);
|
|||
void R_ClearFFloorClips (void);
|
||||
|
||||
void R_DrawPlanes(void);
|
||||
visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel, fixed_t xoff, fixed_t yoff, angle_t plangle,
|
||||
extracolormap_t *planecolormap, ffloor_t *ffloor, polyobj_t *polyobj, pslope_t *slope);
|
||||
visplane_t *R_FindPlane(fixed_t height, INT32 picnum, INT32 lightlevel, fixed_t xoff, fixed_t yoff, fixed_t xscale, fixed_t yscale,
|
||||
angle_t plangle, extracolormap_t *planecolormap, ffloor_t *ffloor, polyobj_t *polyobj, pslope_t *slope);
|
||||
visplane_t *R_CheckPlane(visplane_t *pl, INT32 start, INT32 stop);
|
||||
void R_ExpandPlane(visplane_t *pl, INT32 start, INT32 stop);
|
||||
void R_PlaneBounds(visplane_t *plane);
|
||||
|
|
|
@ -1981,6 +1981,8 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
//SoM: 3/22/2000: Check floor x and y offsets.
|
||||
|| backsector->floorxoffset != frontsector->floorxoffset
|
||||
|| backsector->flooryoffset != frontsector->flooryoffset
|
||||
|| backsector->floorxscale != frontsector->floorxscale
|
||||
|| backsector->flooryscale != frontsector->flooryscale
|
||||
|| backsector->floorangle != frontsector->floorangle
|
||||
//SoM: 3/22/2000: Prevents bleeding.
|
||||
|| (frontsector->heightsec != -1 && frontsector->floorpic != skyflatnum)
|
||||
|
@ -2014,6 +2016,8 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
//SoM: 3/22/2000: Check floor x and y offsets.
|
||||
|| backsector->ceilingxoffset != frontsector->ceilingxoffset
|
||||
|| backsector->ceilingyoffset != frontsector->ceilingyoffset
|
||||
|| backsector->ceilingxscale != frontsector->ceilingxscale
|
||||
|| backsector->ceilingyscale != frontsector->ceilingyscale
|
||||
|| backsector->ceilingangle != frontsector->ceilingangle
|
||||
//SoM: 3/22/2000: Prevents bleeding.
|
||||
|| (frontsector->heightsec != -1 && frontsector->ceilingpic != skyflatnum)
|
||||
|
|
Loading…
Reference in a new issue