Skip to content
Snippets Groups Projects

P_IsPointInSubsector fix! (Most importantly: Knuckles No Longer In Space)

Merged toaster requested to merge hereicome_rougherthanleather into next
+ 42
20
Compare changes
  • Side-by-side
  • Inline
Files
+ 35
13
@@ -45,7 +45,7 @@
@@ -45,7 +45,7 @@
#include "hw_md2.h"
#include "hw_md2.h"
#define R_FAKEFLOORS
#define R_FAKEFLOORS
//#define HWPRECIP
#define HWPRECIP
#define SORTING
#define SORTING
//#define POLYSKY
//#define POLYSKY
@@ -4401,7 +4401,6 @@ static inline void HWR_DrawPrecipitationSprite(gr_vissprite_t *spr)
@@ -4401,7 +4401,6 @@ static inline void HWR_DrawPrecipitationSprite(gr_vissprite_t *spr)
FOutVector *wv;
FOutVector *wv;
GLPatch_t *gpatch; // sprite patch converted to hardware
GLPatch_t *gpatch; // sprite patch converted to hardware
FSurfaceInfo Surf;
FSurfaceInfo Surf;
sector_t *sector;
if (!spr->mobj)
if (!spr->mobj)
return;
return;
@@ -4455,19 +4454,38 @@ static inline void HWR_DrawPrecipitationSprite(gr_vissprite_t *spr)
@@ -4455,19 +4454,38 @@ static inline void HWR_DrawPrecipitationSprite(gr_vissprite_t *spr)
//Hurdler: 25/04/2000: now support colormap in hardware mode
//Hurdler: 25/04/2000: now support colormap in hardware mode
HWR_GetMappedPatch(gpatch, spr->colormap);
HWR_GetMappedPatch(gpatch, spr->colormap);
sector = spr->mobj->subsector->sector;
// colormap test
if (sector->ffloors)
{
{
ffloor_t *caster = sector->lightlist[R_GetPlaneLight(sector, spr->mobj->z, false)].caster;
sector_t *sector = spr->mobj->subsector->sector;
sector = caster ? &sectors[caster->secnum] : sector;
UINT8 lightlevel = 255;
}
extracolormap_t *colormap = sector->extra_colormap;
// sprite lighting by modulating the RGB components
if (sector->numlights)
if (sector->extra_colormap)
{
Surf.FlatColor.rgba = HWR_Lighting(spr->sectorlight,sector->extra_colormap->rgba,sector->extra_colormap->fadergba, false, false);
INT32 light;
 
 
light = R_GetPlaneLight(sector, spr->mobj->z + spr->mobj->height, false); // Always use the light at the top instead of whatever I was doing before
 
 
if (!(spr->mobj->frame & FF_FULLBRIGHT))
 
lightlevel = *sector->lightlist[light].lightlevel;
 
 
if (sector->lightlist[light].extra_colormap)
 
colormap = sector->lightlist[light].extra_colormap;
 
}
else
else
Surf.FlatColor.rgba = HWR_Lighting(spr->sectorlight,NORMALFOG,FADEFOG, false, false);
{
 
if (!(spr->mobj->frame & FF_FULLBRIGHT))
 
lightlevel = sector->lightlevel;
 
 
if (sector->extra_colormap)
 
colormap = sector->extra_colormap;
 
}
 
 
if (colormap)
 
Surf.FlatColor.rgba = HWR_Lighting(lightlevel, colormap->rgba, colormap->fadergba, false, false);
 
else
 
Surf.FlatColor.rgba = HWR_Lighting(lightlevel, NORMALFOG, FADEFOG, false, false);
 
}
if (spr->mobj->flags2 & MF2_SHADOW)
if (spr->mobj->flags2 & MF2_SHADOW)
{
{
@@ -5289,6 +5307,11 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
@@ -5289,6 +5307,11 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
//
//
vis = HWR_NewVisSprite();
vis = HWR_NewVisSprite();
vis->x1 = x1;
vis->x1 = x1;
 
#if 0
 
vis->x2 = x2;
 
#else
 
(void)x2;
 
#endif
vis->x2 = tx;
vis->x2 = tx;
vis->tz = tz;
vis->tz = tz;
vis->dispoffset = 0; // Monster Iestyn: 23/11/15: HARDWARE SUPPORT AT LAST
vis->dispoffset = 0; // Monster Iestyn: 23/11/15: HARDWARE SUPPORT AT LAST
@@ -5301,7 +5324,6 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
@@ -5301,7 +5324,6 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
// set top/bottom coords
// set top/bottom coords
vis->ty = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset) - gr_viewz;
vis->ty = FIXED_TO_FLOAT(thing->z + spritecachedinfo[lumpoff].topoffset) - gr_viewz;
vis->sectorlight = 0xff;
vis->precip = true;
vis->precip = true;
}
}
#endif
#endif
Loading