mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-25 05:41:42 +00:00
Revamp alpha setup for water FOFs
This commit is contained in:
parent
8dd3c78b05
commit
1ad8f75538
4 changed files with 39 additions and 30 deletions
|
@ -1794,17 +1794,22 @@ udmf
|
||||||
type = 13;
|
type = 13;
|
||||||
}
|
}
|
||||||
arg1
|
arg1
|
||||||
|
{
|
||||||
|
title = "Alpha";
|
||||||
|
default = 128;
|
||||||
|
}
|
||||||
|
arg2
|
||||||
{
|
{
|
||||||
title = "Flags";
|
title = "Flags";
|
||||||
type = 12;
|
type = 12;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
1 = "Opaque";
|
1 = "Don't render sides";
|
||||||
2 = "Don't render sides";
|
2 = "Render separate light level";
|
||||||
4 = "Render separate light level";
|
4 = "Use target light level";
|
||||||
8 = "Use target light level";
|
8 = "No ripple effect";
|
||||||
16 = "No ripple effect";
|
16 = "Goo physics";
|
||||||
32 = "Goo physics";
|
32 = "Cut cyan flat pixels";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3056,32 +3056,36 @@ static void P_ConvertBinaryMap(void)
|
||||||
case 125: //FOF: goo water, translucent, no sides
|
case 125: //FOF: goo water, translucent, no sides
|
||||||
lines[i].args[0] = lines[i].tag;
|
lines[i].args[0] = lines[i].tag;
|
||||||
|
|
||||||
//Opaque?
|
//Alpha
|
||||||
if (lines[i].special == 120 || lines[i].special == 122)
|
if (lines[i].special == 120 || lines[i].special == 122)
|
||||||
lines[i].args[1] |= TMFW_OPAQUE;
|
lines[i].args[1] = 255;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
if (sides[lines[i].sidenum[0]].toptexture > 0)
|
||||||
lines[i].alpha = (sides[lines[i].sidenum[0]].toptexture << FRACBITS)/255;
|
lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
|
||||||
else
|
else
|
||||||
lines[i].alpha = FRACUNIT/2;
|
lines[i].args[1] = 128;
|
||||||
}
|
}
|
||||||
|
|
||||||
//No sides?
|
//No sides?
|
||||||
if (lines[i].special == 122 || lines[i].special == 123 || lines[i].special == 125)
|
if (lines[i].special == 122 || lines[i].special == 123 || lines[i].special == 125)
|
||||||
lines[i].args[1] |= TMFW_NOSIDES;
|
lines[i].args[2] |= TMFW_NOSIDES;
|
||||||
|
|
||||||
//Flags
|
//Flags
|
||||||
if (lines[i].flags & ML_NOCLIMB)
|
if (lines[i].flags & ML_NOCLIMB)
|
||||||
lines[i].args[1] |= TMFW_DOUBLESHADOW;
|
lines[i].args[2] |= TMFW_DOUBLESHADOW;
|
||||||
if (lines[i].flags & ML_EFFECT4)
|
if (lines[i].flags & ML_EFFECT4)
|
||||||
lines[i].args[1] |= TMFW_COLORMAPONLY;
|
lines[i].args[2] |= TMFW_COLORMAPONLY;
|
||||||
if (!(lines[i].flags & ML_EFFECT5))
|
if (!(lines[i].flags & ML_EFFECT5))
|
||||||
lines[i].args[1] |= TMFW_NORIPPLE;
|
lines[i].args[2] |= TMFW_NORIPPLE;
|
||||||
|
|
||||||
//Goo?
|
//Goo?
|
||||||
if (lines[i].special >= 124)
|
if (lines[i].special >= 124)
|
||||||
lines[i].args[1] |= TMFW_GOOWATER;
|
lines[i].args[2] |= TMFW_GOOWATER;
|
||||||
|
|
||||||
|
//Splat rendering?
|
||||||
|
if (lines[i].flags & ML_EFFECT6)
|
||||||
|
lines[i].args[2] |= TMFW_SPLAT;
|
||||||
|
|
||||||
lines[i].special = 120;
|
lines[i].special = 120;
|
||||||
break;
|
break;
|
||||||
|
|
18
src/p_spec.c
18
src/p_spec.c
|
@ -5747,7 +5747,7 @@ static ffloor_t *P_AddFakeFloor(sector_t *sec, sector_t *sec2, line_t *master, I
|
||||||
}
|
}
|
||||||
|
|
||||||
fflr->alpha = max(0, min(0xff, alpha));
|
fflr->alpha = max(0, min(0xff, alpha));
|
||||||
if (fflr->alpha == 0xff)
|
if (fflr->alpha < 0xff)
|
||||||
{
|
{
|
||||||
fflr->flags |= FF_TRANSLUCENT;
|
fflr->flags |= FF_TRANSLUCENT;
|
||||||
fflr->spawnflags = fflr->flags;
|
fflr->spawnflags = fflr->flags;
|
||||||
|
@ -6646,19 +6646,19 @@ void P_SpawnSpecials(boolean fromnetsave)
|
||||||
|
|
||||||
case 120: // FOF (water)
|
case 120: // FOF (water)
|
||||||
ffloorflags = FF_EXISTS|FF_RENDERPLANES|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES;
|
ffloorflags = FF_EXISTS|FF_RENDERPLANES|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES;
|
||||||
if (!(lines[i].args[1] & TMFW_OPAQUE))
|
if (!(lines[i].args[2] & TMFW_NOSIDES))
|
||||||
ffloorflags |= FF_TRANSLUCENT;
|
|
||||||
if (!(lines[i].args[1] & TMFW_NOSIDES))
|
|
||||||
ffloorflags |= FF_RENDERSIDES|FF_ALLSIDES;
|
ffloorflags |= FF_RENDERSIDES|FF_ALLSIDES;
|
||||||
if (lines[i].args[1] & TMFW_DOUBLESHADOW)
|
if (lines[i].args[2] & TMFW_DOUBLESHADOW)
|
||||||
ffloorflags |= FF_DOUBLESHADOW;
|
ffloorflags |= FF_DOUBLESHADOW;
|
||||||
if (lines[i].args[1] & TMFW_COLORMAPONLY)
|
if (lines[i].args[2] & TMFW_COLORMAPONLY)
|
||||||
ffloorflags |= FF_COLORMAPONLY;
|
ffloorflags |= FF_COLORMAPONLY;
|
||||||
if (!(lines[i].args[1] & TMFW_NORIPPLE))
|
if (!(lines[i].args[2] & TMFW_NORIPPLE))
|
||||||
ffloorflags |= FF_RIPPLE;
|
ffloorflags |= FF_RIPPLE;
|
||||||
if (lines[i].args[1] & TMFW_GOOWATER)
|
if (lines[i].args[2] & TMFW_GOOWATER)
|
||||||
ffloorflags |= FF_GOOWATER;
|
ffloorflags |= FF_GOOWATER;
|
||||||
P_AddFakeFloorsByLine(i, (ffloorflags & FF_TRANSLUCENT) ? (lines[i].alpha * 0xff) >> FRACBITS : 0xff, ffloorflags, secthinkers);
|
if (lines[i].args[2] & TMFW_SPLAT)
|
||||||
|
ffloorflags |= FF_SPLAT;
|
||||||
|
P_AddFakeFloorsByLine(i, lines[i].args[1], ffloorflags, secthinkers);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 150: // FOF (Air bobbing)
|
case 150: // FOF (Air bobbing)
|
||||||
|
|
12
src/p_spec.h
12
src/p_spec.h
|
@ -46,12 +46,12 @@ typedef enum
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
TMFW_OPAQUE = 1,
|
TMFW_NOSIDES = 1,
|
||||||
TMFW_NOSIDES = 1<<1,
|
TMFW_DOUBLESHADOW = 1<<1,
|
||||||
TMFW_DOUBLESHADOW = 1<<2,
|
TMFW_COLORMAPONLY = 1<<2,
|
||||||
TMFW_COLORMAPONLY = 1<<3,
|
TMFW_NORIPPLE = 1<<3,
|
||||||
TMFW_NORIPPLE = 1<<4,
|
TMFW_GOOWATER = 1<<4,
|
||||||
TMFW_GOOWATER = 1<<5,
|
TMFW_SPLAT = 1<<5,
|
||||||
} textmapfofwater_t;
|
} textmapfofwater_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|
Loading…
Reference in a new issue