mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-04 23:22:36 +00:00
Reimplement Invert Encore
Also add removal warnings for sector Sneaker Panels, Trick Panels, and fast-approaching deprecation warnings for sector Offroad.
This commit is contained in:
parent
3fd8c53c4a
commit
21dd68d392
9 changed files with 68 additions and 53 deletions
|
|
@ -94,6 +94,9 @@ sectorflags
|
|||
gravityflip = "Flip Objects in Reverse Gravity";
|
||||
heatwave = "Heat Wave";
|
||||
noclipcamera = "Intangible to the Camera";
|
||||
ripple_floor = "Ripply Floor";
|
||||
ripple_ceiling = "Ripply Ceiling";
|
||||
invertencore = "Invert Encore Remap";
|
||||
outerspace = "Space Countdown";
|
||||
doublestepup = "Ramp Sector (double step-up/down)";
|
||||
nostepdown = "Non-Ramp Sector (No step-down)";
|
||||
|
|
|
|||
|
|
@ -2871,7 +2871,7 @@ static void HWR_AddPolyObjectPlanes(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
HWR_GetLevelFlat(&levelflats[polyobjsector->floorpic], R_NoEncore(polyobjsector, false));
|
||||
HWR_GetLevelFlat(&levelflats[polyobjsector->floorpic], R_NoEncore(polyobjsector, &levelflats[polyobjsector->floorpic], false));
|
||||
HWR_RenderPolyObjectPlane(po_ptrs[i], false, polyobjsector->floorheight, PF_Occlude,
|
||||
(light == -1 ? gl_frontsector->lightlevel : *gl_frontsector->lightlist[light].lightlevel), &levelflats[polyobjsector->floorpic],
|
||||
polyobjsector, 255, (light == -1 ? gl_frontsector->extra_colormap : *gl_frontsector->lightlist[light].extra_colormap));
|
||||
|
|
@ -2894,7 +2894,7 @@ static void HWR_AddPolyObjectPlanes(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
HWR_GetLevelFlat(&levelflats[polyobjsector->ceilingpic], R_NoEncore(polyobjsector, true));
|
||||
HWR_GetLevelFlat(&levelflats[polyobjsector->ceilingpic], R_NoEncore(polyobjsector, &levelflats[polyobjsector->ceilingpic], true));
|
||||
HWR_RenderPolyObjectPlane(po_ptrs[i], true, polyobjsector->ceilingheight, PF_Occlude,
|
||||
(light == -1 ? gl_frontsector->lightlevel : *gl_frontsector->lightlist[light].lightlevel), &levelflats[polyobjsector->ceilingpic],
|
||||
polyobjsector, 255, (light == -1 ? gl_frontsector->extra_colormap : *gl_frontsector->lightlist[light].extra_colormap));
|
||||
|
|
@ -3031,7 +3031,7 @@ static void HWR_Subsector(size_t num)
|
|||
{
|
||||
if (sub->validcount != validcount)
|
||||
{
|
||||
HWR_GetLevelFlat(&levelflats[gl_frontsector->floorpic], R_NoEncore(gl_frontsector, false));
|
||||
HWR_GetLevelFlat(&levelflats[gl_frontsector->floorpic], R_NoEncore(gl_frontsector, &levelflats[gl_frontsector->floorpic], false));
|
||||
HWR_RenderPlane(sub, &extrasubsectors[num], false,
|
||||
// Hack to make things continue to work around slopes.
|
||||
locFloorHeight == cullFloorHeight ? locFloorHeight : gl_frontsector->floorheight,
|
||||
|
|
@ -3054,7 +3054,7 @@ static void HWR_Subsector(size_t num)
|
|||
{
|
||||
if (sub->validcount != validcount)
|
||||
{
|
||||
HWR_GetLevelFlat(&levelflats[gl_frontsector->ceilingpic], R_NoEncore(gl_frontsector, true));
|
||||
HWR_GetLevelFlat(&levelflats[gl_frontsector->ceilingpic], R_NoEncore(gl_frontsector, &levelflats[gl_frontsector->ceilingpic], true));
|
||||
HWR_RenderPlane(sub, &extrasubsectors[num], true,
|
||||
// Hack to make things continue to work around slopes.
|
||||
locCeilingHeight == cullCeilingHeight ? locCeilingHeight : gl_frontsector->ceilingheight,
|
||||
|
|
@ -3132,7 +3132,7 @@ static void HWR_Subsector(size_t num)
|
|||
}
|
||||
else
|
||||
{
|
||||
HWR_GetLevelFlat(&levelflats[*rover->bottompic], R_NoEncore(gl_frontsector, false));
|
||||
HWR_GetLevelFlat(&levelflats[*rover->bottompic], R_NoEncore(gl_frontsector, &levelflats[*rover->bottompic], false));
|
||||
light = R_GetPlaneLight(gl_frontsector, centerHeight, dup_viewz < cullHeight ? true : false);
|
||||
HWR_RenderPlane(sub, &extrasubsectors[num], false, *rover->bottomheight, HWR_RippleBlend(gl_frontsector, rover, false) | PF_Occlude, *gl_frontsector->lightlist[light].lightlevel, &levelflats[*rover->bottompic],
|
||||
rover->master->frontsector, 255, *gl_frontsector->lightlist[light].extra_colormap);
|
||||
|
|
@ -3180,7 +3180,7 @@ static void HWR_Subsector(size_t num)
|
|||
}
|
||||
else
|
||||
{
|
||||
HWR_GetLevelFlat(&levelflats[*rover->toppic], R_NoEncore(gl_frontsector, true));
|
||||
HWR_GetLevelFlat(&levelflats[*rover->toppic], R_NoEncore(gl_frontsector, &levelflats[*rover->toppic], true));
|
||||
light = R_GetPlaneLight(gl_frontsector, centerHeight, dup_viewz < cullHeight ? true : false);
|
||||
HWR_RenderPlane(sub, &extrasubsectors[num], true, *rover->topheight, HWR_RippleBlend(gl_frontsector, rover, true) | PF_Occlude, *gl_frontsector->lightlist[light].lightlevel, &levelflats[*rover->toppic],
|
||||
rover->master->frontsector, 255, *gl_frontsector->lightlist[light].extra_colormap);
|
||||
|
|
@ -4886,7 +4886,7 @@ static void HWR_CreateDrawNodes(void)
|
|||
gl_frontsector = NULL;
|
||||
|
||||
if (!(sortnode[sortindex[i]].plane->blend & PF_NoTexture))
|
||||
HWR_GetLevelFlat(sortnode[sortindex[i]].plane->levelflat, R_NoEncore(sortnode[sortindex[i]].plane->FOFSector, sortnode[sortindex[i]].plane->isceiling));
|
||||
HWR_GetLevelFlat(sortnode[sortindex[i]].plane->levelflat, R_NoEncore(sortnode[sortindex[i]].plane->FOFSector, sortnode[sortindex[i]].plane->levelflat, sortnode[sortindex[i]].plane->isceiling));
|
||||
HWR_RenderPlane(NULL, sortnode[sortindex[i]].plane->xsub, sortnode[sortindex[i]].plane->isceiling, sortnode[sortindex[i]].plane->fixedheight, sortnode[sortindex[i]].plane->blend, sortnode[sortindex[i]].plane->lightlevel,
|
||||
sortnode[sortindex[i]].plane->levelflat, sortnode[sortindex[i]].plane->FOFSector, sortnode[sortindex[i]].plane->alpha, sortnode[sortindex[i]].plane->planecolormap);
|
||||
}
|
||||
|
|
@ -4896,7 +4896,7 @@ static void HWR_CreateDrawNodes(void)
|
|||
gl_frontsector = NULL;
|
||||
|
||||
if (!(sortnode[sortindex[i]].polyplane->blend & PF_NoTexture))
|
||||
HWR_GetLevelFlat(sortnode[sortindex[i]].polyplane->levelflat, R_NoEncore(sortnode[sortindex[i]].polyplane->FOFSector, sortnode[sortindex[i]].polyplane->isceiling));
|
||||
HWR_GetLevelFlat(sortnode[sortindex[i]].polyplane->levelflat, R_NoEncore(sortnode[sortindex[i]].polyplane->FOFSector, sortnode[sortindex[i]].polyplane->levelflat, sortnode[sortindex[i]].polyplane->isceiling));
|
||||
HWR_RenderPolyObjectPlane(sortnode[sortindex[i]].polyplane->polysector, sortnode[sortindex[i]].polyplane->isceiling, sortnode[sortindex[i]].polyplane->fixedheight, sortnode[sortindex[i]].polyplane->blend, sortnode[sortindex[i]].polyplane->lightlevel,
|
||||
sortnode[sortindex[i]].polyplane->levelflat, sortnode[sortindex[i]].polyplane->FOFSector, sortnode[sortindex[i]].polyplane->alpha, sortnode[sortindex[i]].polyplane->planecolormap);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1486,7 +1486,7 @@ static void K_ParseTerrainParameter(size_t i, const char *param, const char *val
|
|||
}
|
||||
else if (stricmp(param, "offroad") == 0)
|
||||
{
|
||||
terrain->offroad = (UINT8)get_number(val); // offroad strength enum?
|
||||
terrain->offroad = FLOAT_TO_FIXED(atof(val));
|
||||
}
|
||||
else if (stricmp(param, "damageType") == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ typedef struct terrain_s
|
|||
size_t overlayID; // Overlay defintion ID.
|
||||
|
||||
fixed_t friction; // The default friction of this texture.
|
||||
UINT8 offroad; // The default offroad level of this texture.
|
||||
fixed_t offroad; // The default offroad level of this texture.
|
||||
INT16 damageType; // The default damage type of this texture. (Negative means no damage).
|
||||
UINT8 trickPanel; // Trick panel strength
|
||||
fixed_t floorClip; // Offset for sprites on this ground
|
||||
|
|
|
|||
|
|
@ -1494,6 +1494,8 @@ static void ParseTextmapSectorParameter(UINT32 i, const char *param, const char
|
|||
sectors[i].flags |= MSF_RIPPLE_FLOOR;
|
||||
else if (fastcmp(param, "ripple_ceiling") && fastcmp("true", val))
|
||||
sectors[i].flags |= MSF_RIPPLE_CEILING;
|
||||
else if (fastcmp(param, "invertencore") && fastcmp("true", val))
|
||||
sectors[i].flags |= MSF_INVERTENCORE;
|
||||
else if (fastcmp(param, "nostepup") && fastcmp("true", val))
|
||||
sectors[i].specialflags |= SSF_NOSTEPUP;
|
||||
else if (fastcmp(param, "doublestepup") && fastcmp("true", val))
|
||||
|
|
@ -2325,6 +2327,8 @@ static void P_WriteTextmap(void)
|
|||
fprintf(f, "ripple_floor = true;\n");
|
||||
if (wsectors[i].flags & MSF_RIPPLE_CEILING)
|
||||
fprintf(f, "ripple_ceiling = true;\n");
|
||||
if (wsectors[i].flags & MSF_INVERTENCORE)
|
||||
fprintf(f, "invertencore = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_NOSTEPUP)
|
||||
fprintf(f, "nostepup = true;\n");
|
||||
if (wsectors[i].specialflags & SSF_DOUBLESTEPUP)
|
||||
|
|
@ -4026,7 +4030,6 @@ static void P_ConvertBinaryLinedefTypes(void)
|
|||
|
||||
if (lines[i].flags & ML_DONTPEGTOP)
|
||||
sectors[s].flags |= MSF_RIPPLE_FLOOR;
|
||||
|
||||
if (lines[i].flags & ML_DONTPEGBOTTOM)
|
||||
sectors[s].flags |= MSF_RIPPLE_CEILING;
|
||||
}
|
||||
|
|
@ -5788,18 +5791,23 @@ static void P_ConvertBinarySectorTypes(void)
|
|||
switch(GETSECSPECIAL(sectors[i].special, 1))
|
||||
{
|
||||
case 1: //Damage
|
||||
case 5: //Spikes
|
||||
sectors[i].damagetype = SD_GENERIC;
|
||||
break;
|
||||
case 2: //Offroad (Weak)
|
||||
CONS_Alert(CONS_WARNING, "Offroad specials will be deprecated soon. Use the TERRAIN effect!\n");
|
||||
sectors[i].offroad = FRACUNIT;
|
||||
break;
|
||||
case 3: //Offroad
|
||||
CONS_Alert(CONS_WARNING, "Offroad specials will be deprecated soon. Use the TERRAIN effect!\n");
|
||||
sectors[i].offroad = 2*FRACUNIT;
|
||||
break;
|
||||
case 4: //Offroad (Strong)
|
||||
CONS_Alert(CONS_WARNING, "Offroad specials will be deprecated soon. Use the TERRAIN effect!\n");
|
||||
sectors[i].offroad = 3*FRACUNIT;
|
||||
break;
|
||||
case 5: //Spikes
|
||||
sectors[i].damagetype = SD_GENERIC;
|
||||
break;
|
||||
case 6: //Death pit (camera tilt)
|
||||
case 7: //Death pit (no camera tilt)
|
||||
sectors[i].damagetype = SD_DEATHPIT;
|
||||
|
|
@ -5807,11 +5815,8 @@ static void P_ConvertBinarySectorTypes(void)
|
|||
case 8: //Instakill
|
||||
sectors[i].damagetype = SD_INSTAKILL;
|
||||
break;
|
||||
case 11: //Special stage damage
|
||||
//sectors[i].damagetype = SD_SPECIALSTAGE;
|
||||
break;
|
||||
case 12: //Space countdown
|
||||
//sectors[i].specialflags |= SSF_OUTERSPACE;
|
||||
case 12: //Wall sector
|
||||
sectors[i].specialflags |= SSF_NOSTEPUP;
|
||||
break;
|
||||
case 13: //Ramp sector
|
||||
sectors[i].specialflags |= SSF_DOUBLESTEPUP;
|
||||
|
|
@ -5853,12 +5858,19 @@ static void P_ConvertBinarySectorTypes(void)
|
|||
case 8: //Check for linedef executor on FOFs
|
||||
sectors[i].flags |= MSF_TRIGGERLINE_MOBJ;
|
||||
break;
|
||||
case 15: //Invert Encore
|
||||
sectors[i].flags |= MSF_INVERTENCORE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch(GETSECSPECIAL(sectors[i].special, 3))
|
||||
{
|
||||
case 1: //Trick panel
|
||||
case 3:
|
||||
CONS_Alert(CONS_WARNING, "Trick Panel special is deprecated. Use the TERRAIN effect!\n");
|
||||
break;
|
||||
case 5: //Speed pad
|
||||
sectors[i].specialflags |= SSF_SPEEDPAD;
|
||||
break;
|
||||
|
|
@ -5871,12 +5883,18 @@ static void P_ConvertBinarySectorTypes(void)
|
|||
case 1: //Star post activator
|
||||
sectors[i].specialflags |= SSF_STARPOSTACTIVATOR;
|
||||
break;
|
||||
case 2: //Exit/Special Stage pit/Return flag
|
||||
case 2: //Exit
|
||||
sectors[i].specialflags |= SSF_EXIT;
|
||||
break;
|
||||
case 5: //Fan sector
|
||||
sectors[i].specialflags |= SSF_FAN;
|
||||
break;
|
||||
case 6: //Sneaker panel
|
||||
CONS_Alert(CONS_WARNING, "Sneaker Panel special is deprecated. Use the TERRAIN effect!\n");
|
||||
break;
|
||||
case 7: //Destroy items
|
||||
sectors[i].specialflags |= SSF_DESTROYITEMS;
|
||||
break;
|
||||
case 8: //Zoom tube start
|
||||
sectors[i].specialflags |= SSF_ZOOMTUBESTART;
|
||||
break;
|
||||
|
|
|
|||
15
src/p_spec.c
15
src/p_spec.c
|
|
@ -4453,22 +4453,22 @@ static void P_ProcessSpeedPad(player_t *player, sector_t *sector, sector_t *rove
|
|||
|
||||
static void P_ProcessExitSector(player_t *player, mtag_t sectag)
|
||||
{
|
||||
#if 1
|
||||
(void)player;
|
||||
(void)sectag;
|
||||
#else
|
||||
INT32 lineindex;
|
||||
|
||||
#if 0
|
||||
if (!(gametyperules & GTR_ALLOWEXIT))
|
||||
return;
|
||||
#endif
|
||||
|
||||
// Exit (for FOF exits; others are handled in P_PlayerThink in p_user.c)
|
||||
P_DoPlayerFinish(player);
|
||||
|
||||
P_SetupSignExit(player);
|
||||
|
||||
#if 0
|
||||
if (!G_CoopGametype())
|
||||
return;
|
||||
#endif
|
||||
|
||||
// Custom exit!
|
||||
// important: use sectag on next line instead of player->mo->subsector->tag
|
||||
|
|
@ -4482,15 +4482,10 @@ static void P_ProcessExitSector(player_t *player, mtag_t sectag)
|
|||
return;
|
||||
}
|
||||
|
||||
// Special goodies depending on emeralds collected
|
||||
if ((lines[lineindex].args[1] & TMEF_EMERALDCHECK) && ALLCHAOSEMERALDS(emeralds))
|
||||
nextmapoverride = (INT16)(udmf ? lines[lineindex].args[2] : lines[lineindex].frontsector->ceilingheight>>FRACBITS);
|
||||
else
|
||||
nextmapoverride = (INT16)(udmf ? lines[lineindex].args[0] : lines[lineindex].frontsector->floorheight>>FRACBITS);
|
||||
nextmapoverride = (INT16)(udmf ? lines[lineindex].args[0] : lines[lineindex].frontsector->floorheight>>FRACBITS);
|
||||
|
||||
if (lines[lineindex].args[1] & TMEF_SKIPTALLY)
|
||||
skipstats = 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void P_ProcessZoomTube(player_t *player, mtag_t sectag, boolean end)
|
||||
|
|
|
|||
45
src/r_bsp.c
45
src/r_bsp.c
|
|
@ -41,31 +41,28 @@ drawseg_t *ds_p = NULL;
|
|||
// indicates doors closed wrt automap bugfix:
|
||||
INT32 doorclosed;
|
||||
|
||||
boolean R_NoEncore(sector_t *sector, boolean ceiling)
|
||||
boolean R_NoEncore(sector_t *sector, levelflat_t *flat, boolean ceiling)
|
||||
{
|
||||
// FIXME: UDMFify
|
||||
/*
|
||||
boolean invertencore = (GETSECSPECIAL(sector->special, 2) == 15);
|
||||
#if 0 // perfect implementation
|
||||
INT32 val = GETSECSPECIAL(sector->special, 3);
|
||||
//if (val != 1 && val != 3 // spring panel
|
||||
#else // optimised, see #define GETSECSPECIAL(i,j) ((i >> ((j-1)*4))&15)
|
||||
if ((!(sector->special & (1<<8)) || (sector->special & ((4|8)<<8))) // spring panel
|
||||
#endif
|
||||
&& GETSECSPECIAL(sector->special, 4) != 6) // sneaker panel
|
||||
return invertencore;
|
||||
const boolean invertEncore = (sector->flags & MSF_INVERTENCORE);
|
||||
const terrain_t *terrain = (flat != NULL ? flat->terrain : NULL);
|
||||
|
||||
if (invertencore)
|
||||
if ((terrain == NULL)
|
||||
|| (terrain->trickPanel <= 0 && !(terrain->flags & TRF_SNEAKERPANEL)))
|
||||
{
|
||||
return invertEncore;
|
||||
}
|
||||
|
||||
if (invertEncore)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ceiling)
|
||||
{
|
||||
return ((boolean)(sector->flags & MSF_FLIPSPECIAL_CEILING));
|
||||
return ((boolean)(sector->flags & MSF_FLIPSPECIAL_FLOOR));
|
||||
*/
|
||||
}
|
||||
|
||||
(void)sector;
|
||||
(void)ceiling;
|
||||
return false;
|
||||
return ((boolean)(sector->flags & MSF_FLIPSPECIAL_FLOOR));
|
||||
}
|
||||
|
||||
boolean R_IsRipplePlane(sector_t *sector, ffloor_t *rover, int ceiling)
|
||||
|
|
@ -953,7 +950,7 @@ static void R_Subsector(size_t num)
|
|||
frontsector->floorheight, frontsector->floorpic, floorlightlevel,
|
||||
frontsector->floor_xoffs, frontsector->floor_yoffs, frontsector->floorpic_angle,
|
||||
floorcolormap, NULL, NULL, frontsector->f_slope,
|
||||
R_NoEncore(frontsector, false),
|
||||
R_NoEncore(frontsector, &levelflats[frontsector->floorpic], false),
|
||||
R_IsRipplePlane(frontsector, NULL, false),
|
||||
false
|
||||
);
|
||||
|
|
@ -969,7 +966,7 @@ static void R_Subsector(size_t num)
|
|||
frontsector->ceilingheight, frontsector->ceilingpic, ceilinglightlevel,
|
||||
frontsector->ceiling_xoffs, frontsector->ceiling_yoffs, frontsector->ceilingpic_angle,
|
||||
ceilingcolormap, NULL, NULL, frontsector->c_slope,
|
||||
R_NoEncore(frontsector, true),
|
||||
R_NoEncore(frontsector, &levelflats[frontsector->ceilingpic], true),
|
||||
R_IsRipplePlane(frontsector, NULL, true),
|
||||
true
|
||||
);
|
||||
|
|
@ -1017,7 +1014,7 @@ static void R_Subsector(size_t num)
|
|||
*rover->bottomheight, *rover->bottompic,
|
||||
*frontsector->lightlist[light].lightlevel, *rover->bottomxoffs,
|
||||
*rover->bottomyoffs, *rover->bottomangle, *frontsector->lightlist[light].extra_colormap, rover, NULL, *rover->b_slope,
|
||||
R_NoEncore(rover->master->frontsector, true),
|
||||
R_NoEncore(rover->master->frontsector, &levelflats[*rover->bottompic], true),
|
||||
R_IsRipplePlane(rover->master->frontsector, rover, true),
|
||||
true
|
||||
);
|
||||
|
|
@ -1051,7 +1048,7 @@ static void R_Subsector(size_t num)
|
|||
*rover->topheight, *rover->toppic,
|
||||
*frontsector->lightlist[light].lightlevel, *rover->topxoffs, *rover->topyoffs, *rover->topangle,
|
||||
*frontsector->lightlist[light].extra_colormap, rover, NULL, *rover->t_slope,
|
||||
R_NoEncore(rover->master->frontsector, false),
|
||||
R_NoEncore(rover->master->frontsector, &levelflats[*rover->toppic], false),
|
||||
R_IsRipplePlane(rover->master->frontsector, rover, false),
|
||||
false
|
||||
);
|
||||
|
|
@ -1101,7 +1098,7 @@ static void R_Subsector(size_t num)
|
|||
polysec->floorpic_angle-po->angle,
|
||||
(light == -1 ? frontsector->extra_colormap : *frontsector->lightlist[light].extra_colormap), NULL, po,
|
||||
NULL, // will ffloors be slopable eventually?
|
||||
R_NoEncore(polysec, false),
|
||||
R_NoEncore(polysec, &levelflats[polysec->floorpic], false),
|
||||
false, /* TODO: wet polyobjects? */
|
||||
true
|
||||
);
|
||||
|
|
@ -1130,7 +1127,7 @@ static void R_Subsector(size_t num)
|
|||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->ceiling_xoffs, polysec->ceiling_yoffs, polysec->ceilingpic_angle-po->angle,
|
||||
(light == -1 ? frontsector->extra_colormap : *frontsector->lightlist[light].extra_colormap), NULL, po,
|
||||
NULL, // will ffloors be slopable eventually?
|
||||
R_NoEncore(polysec, true),
|
||||
R_NoEncore(polysec, &levelflats[polysec->ceilingpic], true),
|
||||
false, /* TODO: wet polyobjects? */
|
||||
false
|
||||
);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ void R_RenderBSPNode(INT32 bspnum);
|
|||
|
||||
// determines when a given sector shouldn't abide by the encoremap's palette.
|
||||
// no longer a static since this is used for encore in hw_main.c as well now:
|
||||
boolean R_NoEncore(sector_t *sector, boolean ceiling);
|
||||
boolean R_NoEncore(sector_t *sector, levelflat_t *flat, boolean ceiling);
|
||||
|
||||
boolean R_IsRipplePlane(sector_t *sector, ffloor_t *rover, int ceiling);
|
||||
|
||||
|
|
|
|||
|
|
@ -345,6 +345,8 @@ typedef enum
|
|||
// water ripple
|
||||
MSF_RIPPLE_FLOOR = 1<<10,
|
||||
MSF_RIPPLE_CEILING = 1<<11,
|
||||
// invert encore color remap status
|
||||
MSF_INVERTENCORE = 1<<12,
|
||||
} sectorflags_t;
|
||||
|
||||
typedef enum
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue