Merge branch 'colormap-overhaul-change-ldef' into colormap-overhaul-fade
This commit is contained in:
commit
c4079dfca9
|
@ -1466,6 +1466,7 @@ static void P_LoadRawSideDefs2(void *data)
|
||||||
{
|
{
|
||||||
case 63: // variable colormap via 242 linedef
|
case 63: // variable colormap via 242 linedef
|
||||||
case 606: //SoM: 4/4/2000: Just colormap transfer
|
case 606: //SoM: 4/4/2000: Just colormap transfer
|
||||||
|
case 447: // Change colormap of tagged sectors! -- Monster Iestyn 14/06/18
|
||||||
case 455: // Fade colormaps! mazmazz 9/12/2018 (:flag_us:)
|
case 455: // Fade colormaps! mazmazz 9/12/2018 (:flag_us:)
|
||||||
// SoM: R_CreateColormap will only create a colormap in software mode...
|
// SoM: R_CreateColormap will only create a colormap in software mode...
|
||||||
// Perhaps we should just call it instead of doing the calculations here.
|
// Perhaps we should just call it instead of doing the calculations here.
|
||||||
|
|
57
src/p_spec.c
57
src/p_spec.c
|
@ -3253,6 +3253,63 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 447: // Change colormap of tagged sectors!
|
||||||
|
// Basically this special applies a colormap to the tagged sectors, just like 606 (the colormap linedef)
|
||||||
|
// Except it is activated by linedef executor, not level load
|
||||||
|
// This could even override existing colormaps I believe
|
||||||
|
// -- Monster Iestyn 14/06/18
|
||||||
|
for (secnum = -1; (secnum = P_FindSectorFromLineTag(line, secnum)) >= 0 ;)
|
||||||
|
{
|
||||||
|
if (line->flags & ML_EFFECT3) // relative calc
|
||||||
|
{
|
||||||
|
extracolormap_t *exc = R_AddColormaps(
|
||||||
|
(line->flags & ML_TFERLINE) ? line->backsector->extra_colormap : sectors[secnum].extra_colormap, // use back colormap instead of target sector
|
||||||
|
line->frontsector->extra_colormap,
|
||||||
|
line->flags & ML_EFFECT1, // subtract R
|
||||||
|
line->flags & ML_NOCLIMB, // subtract G
|
||||||
|
line->flags & ML_EFFECT2, // subtract B
|
||||||
|
false, // subtract A (no flag for this, just pass negative alpha)
|
||||||
|
line->flags & ML_EFFECT1, // subtract FadeR
|
||||||
|
line->flags & ML_NOCLIMB, // subtract FadeG
|
||||||
|
line->flags & ML_EFFECT2, // subtract FadeB
|
||||||
|
false, // subtract FadeA (no flag for this, just pass negative alpha)
|
||||||
|
false, // subtract FadeStart (we ran out of flags)
|
||||||
|
false, // subtract FadeEnd (we ran out of flags)
|
||||||
|
false, // ignore Fog (we ran out of flags)
|
||||||
|
line->flags & ML_DONTPEGBOTTOM,
|
||||||
|
(line->flags & ML_DONTPEGBOTTOM) ? (sides[line->sidenum[0]].textureoffset >> FRACBITS) : 0,
|
||||||
|
(line->flags & ML_DONTPEGBOTTOM) ? (sides[line->sidenum[0]].rowoffset >> FRACBITS) : 0,
|
||||||
|
false);
|
||||||
|
|
||||||
|
if (!(sectors[secnum].extra_colormap = R_GetColormapFromList(exc)))
|
||||||
|
{
|
||||||
|
exc->colormap = R_CreateLightTable(exc);
|
||||||
|
R_AddColormapToList(exc);
|
||||||
|
sectors[secnum].extra_colormap = exc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Z_Free(exc);
|
||||||
|
}
|
||||||
|
else if (line->flags & ML_DONTPEGBOTTOM) // alternate alpha (by texture offsets)
|
||||||
|
{
|
||||||
|
extracolormap_t *exc = R_CopyColormap(line->frontsector->extra_colormap, false);
|
||||||
|
exc->rgba = R_GetRgbaRGB(exc->rgba) + R_PutRgbaA(max(min(sides[line->sidenum[0]].textureoffset >> FRACBITS, 25), 0));
|
||||||
|
exc->fadergba = R_GetRgbaRGB(exc->fadergba) + R_PutRgbaA(max(min(sides[line->sidenum[0]].rowoffset >> FRACBITS, 25), 0));
|
||||||
|
|
||||||
|
if (!(sectors[secnum].extra_colormap = R_GetColormapFromList(exc)))
|
||||||
|
{
|
||||||
|
exc->colormap = R_CreateLightTable(exc);
|
||||||
|
R_AddColormapToList(exc);
|
||||||
|
sectors[secnum].extra_colormap = exc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Z_Free(exc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sectors[secnum].extra_colormap = line->frontsector->extra_colormap;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 448: // Change skybox viewpoint/centerpoint
|
case 448: // Change skybox viewpoint/centerpoint
|
||||||
if ((mo && mo->player && P_IsLocalPlayer(mo->player)) || (line->flags & ML_NOCLIMB))
|
if ((mo && mo->player && P_IsLocalPlayer(mo->player)) || (line->flags & ML_NOCLIMB))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue