mirror of
https://github.com/ZDoom/Raze.git
synced 2025-06-04 19:20:43 +00:00
Light stuff
git-svn-id: https://svn.eduke32.com/eduke32@1402 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
c3b41ce1cf
commit
d4bca26bd9
10 changed files with 425 additions and 304 deletions
|
@ -42,15 +42,16 @@
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
// For Visual Studio 6 in C++ mode wrap <wchar.h> include with 'extern "C++" {}'
|
// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
|
||||||
|
// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
|
||||||
// or compiler give many errors like this:
|
// or compiler give many errors like this:
|
||||||
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
||||||
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
#ifdef __cplusplus
|
||||||
extern "C++" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
# include <wchar.h>
|
# include <wchar.h>
|
||||||
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Define _W64 macros to mark types changing their size, like intptr_t.
|
// Define _W64 macros to mark types changing their size, like intptr_t.
|
||||||
|
@ -62,17 +63,32 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// 7.18.1 Integer types
|
// 7.18.1 Integer types
|
||||||
|
|
||||||
// 7.18.1.1 Exact-width integer types
|
// 7.18.1.1 Exact-width integer types
|
||||||
typedef signed __int8 int8_t;
|
|
||||||
typedef signed __int16 int16_t;
|
// Visual Studio 6 and Embedded Visual C++ 4 doesn't
|
||||||
typedef signed __int32 int32_t;
|
// realize that, e.g. char has the same size as __int8
|
||||||
typedef signed __int64 int64_t;
|
// so we give up on __intX for them.
|
||||||
typedef unsigned __int8 uint8_t;
|
#if (_MSC_VER < 1300)
|
||||||
typedef unsigned __int16 uint16_t;
|
typedef signed char int8_t;
|
||||||
typedef unsigned __int32 uint32_t;
|
typedef short int16_t;
|
||||||
typedef unsigned __int64 uint64_t;
|
typedef int int32_t;
|
||||||
|
typedef unsigned char uint8_t;
|
||||||
|
typedef unsigned short uint16_t;
|
||||||
|
typedef unsigned int uint32_t;
|
||||||
|
#else
|
||||||
|
typedef signed __int8 int8_t;
|
||||||
|
typedef __int16 int16_t;
|
||||||
|
typedef __int32 int32_t;
|
||||||
|
typedef unsigned __int8 uint8_t;
|
||||||
|
typedef unsigned __int16 uint16_t;
|
||||||
|
typedef unsigned __int32 uint32_t;
|
||||||
|
#endif
|
||||||
|
typedef __int64 int64_t;
|
||||||
|
typedef unsigned __int64 uint64_t;
|
||||||
|
|
||||||
|
|
||||||
// 7.18.1.2 Minimum-width integer types
|
// 7.18.1.2 Minimum-width integer types
|
||||||
typedef int8_t int_least8_t;
|
typedef int8_t int_least8_t;
|
||||||
|
|
|
@ -148,39 +148,6 @@ typedef struct s_prprogrambit {
|
||||||
char* frag_prog;
|
char* frag_prog;
|
||||||
} _prprogrambit;
|
} _prprogrambit;
|
||||||
|
|
||||||
// LIGHTS
|
|
||||||
#define PR_MAXLIGHTS 128
|
|
||||||
#define SHADOW_DEPTH_OFFSET 30
|
|
||||||
#define PR_MAXLIGHTPRIORITY 6
|
|
||||||
|
|
||||||
typedef struct s_prlight {
|
|
||||||
int32_t x, y, z, horiz, range;
|
|
||||||
int16_t angle, faderadius, radius, sector;
|
|
||||||
uint8_t color[3], priority;
|
|
||||||
int8_t minshade, maxshade;
|
|
||||||
int16_t tilenum;
|
|
||||||
// internal members
|
|
||||||
GLfloat proj[16];
|
|
||||||
GLfloat transform[16];
|
|
||||||
float frustum[5 * 4];
|
|
||||||
int32_t rtindex;
|
|
||||||
struct {
|
|
||||||
int32_t active : 1;
|
|
||||||
int32_t invalidate : 1;
|
|
||||||
int32_t isinview : 1;
|
|
||||||
} flags;
|
|
||||||
GLuint lightmap;
|
|
||||||
} _prlight;
|
|
||||||
|
|
||||||
extern _prlight staticlights[PR_MAXLIGHTS];
|
|
||||||
extern int32_t staticlightcount;
|
|
||||||
|
|
||||||
extern _prlight gamelights[PR_MAXLIGHTS];
|
|
||||||
extern int32_t gamelightcount;
|
|
||||||
|
|
||||||
extern _prlight framelights[PR_MAXLIGHTS];
|
|
||||||
extern int32_t framelightcount;
|
|
||||||
|
|
||||||
// RENDER TARGETS
|
// RENDER TARGETS
|
||||||
typedef struct s_prrt {
|
typedef struct s_prrt {
|
||||||
GLenum target;
|
GLenum target;
|
||||||
|
@ -190,6 +157,12 @@ typedef struct s_prrt {
|
||||||
int32_t xdim, ydim;
|
int32_t xdim, ydim;
|
||||||
} _prrt;
|
} _prrt;
|
||||||
|
|
||||||
|
// LIGHTS
|
||||||
|
#define PR_MAXLIGHTS 128
|
||||||
|
#define SHADOW_DEPTH_OFFSET 30
|
||||||
|
#define PR_MAXLIGHTPRIORITY 6
|
||||||
|
|
||||||
|
|
||||||
// BUILD DATA
|
// BUILD DATA
|
||||||
typedef struct s_prplane {
|
typedef struct s_prplane {
|
||||||
// geometry
|
// geometry
|
||||||
|
@ -211,6 +184,40 @@ typedef struct s_prplane {
|
||||||
int16_t lightcount;
|
int16_t lightcount;
|
||||||
} _prplane;
|
} _prplane;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct s_prlight {
|
||||||
|
int32_t x, y, z, horiz, range;
|
||||||
|
int16_t angle, faderadius, radius, sector;
|
||||||
|
uint8_t color[3], priority;
|
||||||
|
int8_t minshade, maxshade;
|
||||||
|
int16_t tilenum;
|
||||||
|
// internal members
|
||||||
|
GLfloat proj[16];
|
||||||
|
GLfloat transform[16];
|
||||||
|
float frustum[5 * 4];
|
||||||
|
int32_t rtindex;
|
||||||
|
struct {
|
||||||
|
int32_t active : 1;
|
||||||
|
int32_t invalidate : 1;
|
||||||
|
int32_t isinview : 1;
|
||||||
|
int32_t display : 1;
|
||||||
|
} flags;
|
||||||
|
GLuint lightmap;
|
||||||
|
_prplane* myplanes[PR_MAXLIGHTS];
|
||||||
|
int32_t planecnt;
|
||||||
|
} _prlight;
|
||||||
|
|
||||||
|
extern _prlight staticlights[PR_MAXLIGHTS];
|
||||||
|
extern int32_t staticlightcount;
|
||||||
|
|
||||||
|
extern _prlight gamelights[PR_MAXLIGHTS];
|
||||||
|
extern int32_t gamelightcount;
|
||||||
|
|
||||||
|
extern _prlight framelights[PR_MAXLIGHTS];
|
||||||
|
extern int32_t framelightcount;
|
||||||
|
|
||||||
|
extern _prlight prlights[PR_MAXLIGHTS];
|
||||||
|
|
||||||
typedef struct s_prsector {
|
typedef struct s_prsector {
|
||||||
// polymer data
|
// polymer data
|
||||||
GLdouble* verts;
|
GLdouble* verts;
|
||||||
|
@ -334,7 +341,7 @@ static void polymer_updatelights(void);
|
||||||
static void polymer_resetlights(void);
|
static void polymer_resetlights(void);
|
||||||
static void polymer_resetplanelights(_prplane* plane);
|
static void polymer_resetplanelights(_prplane* plane);
|
||||||
static void polymer_addplanelight(_prplane* plane, int16_t lighti);
|
static void polymer_addplanelight(_prplane* plane, int16_t lighti);
|
||||||
static void polymer_deleteplanelight(_prplane* plane, int16_t lighti);
|
static inline void polymer_deleteplanelight(_prplane* plane, int16_t lighti);
|
||||||
static int32_t polymer_planeinlight(_prplane* plane, _prlight* light);
|
static int32_t polymer_planeinlight(_prplane* plane, _prlight* light);
|
||||||
static void polymer_invalidateplanelights(_prplane* plane);
|
static void polymer_invalidateplanelights(_prplane* plane);
|
||||||
static void polymer_invalidatesectorlights(int16_t sectnum);
|
static void polymer_invalidatesectorlights(int16_t sectnum);
|
||||||
|
|
|
@ -6225,8 +6225,8 @@ killsprite:
|
||||||
curpolygonoffset = 0;
|
curpolygonoffset = 0;
|
||||||
cullcheckcnt = 0;
|
cullcheckcnt = 0;
|
||||||
#endif
|
#endif
|
||||||
pos.x = globalposx;
|
pos.x = (float)globalposx;
|
||||||
pos.y = globalposy;
|
pos.y = (float)globalposy;
|
||||||
|
|
||||||
while (maskwallcnt)
|
while (maskwallcnt)
|
||||||
{
|
{
|
||||||
|
@ -6234,18 +6234,18 @@ killsprite:
|
||||||
#if defined(USE_OPENGL) && defined(POLYMER)
|
#if defined(USE_OPENGL) && defined(POLYMER)
|
||||||
if (rendmode == 4)
|
if (rendmode == 4)
|
||||||
{
|
{
|
||||||
dot.x = wall[maskwall[maskwallcnt]].x;
|
dot.x = (float)wall[maskwall[maskwallcnt]].x;
|
||||||
dot.y = wall[maskwall[maskwallcnt]].y;
|
dot.y = (float)wall[maskwall[maskwallcnt]].y;
|
||||||
dot2.x = wall[wall[maskwall[maskwallcnt]].point2].x;
|
dot2.x = (float)wall[wall[maskwall[maskwallcnt]].point2].x;
|
||||||
dot2.y = wall[wall[maskwall[maskwallcnt]].point2].y;
|
dot2.y = (float)wall[wall[maskwall[maskwallcnt]].point2].y;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
dot.x = wall[thewall[maskwall[maskwallcnt]]].x;
|
dot.x = (float)wall[thewall[maskwall[maskwallcnt]]].x;
|
||||||
dot.y = wall[thewall[maskwall[maskwallcnt]]].y;
|
dot.y = (float)wall[thewall[maskwall[maskwallcnt]]].y;
|
||||||
dot2.x = wall[wall[thewall[maskwall[maskwallcnt]]].point2].x;
|
dot2.x = (float)wall[wall[thewall[maskwall[maskwallcnt]]].point2].x;
|
||||||
dot2.y = wall[wall[thewall[maskwall[maskwallcnt]]].point2].y;
|
dot2.y = (float)wall[wall[thewall[maskwall[maskwallcnt]]].point2].y;
|
||||||
}
|
}
|
||||||
|
|
||||||
maskeq = equation(dot.x, dot.y, dot2.x, dot2.y);
|
maskeq = equation(dot.x, dot.y, dot2.x, dot2.y);
|
||||||
|
@ -6261,8 +6261,8 @@ killsprite:
|
||||||
i--;
|
i--;
|
||||||
if (tspriteptr[i] != NULL)
|
if (tspriteptr[i] != NULL)
|
||||||
{
|
{
|
||||||
spr.x = tspriteptr[i]->x;
|
spr.x = (float)tspriteptr[i]->x;
|
||||||
spr.y = tspriteptr[i]->y;
|
spr.y = (float)tspriteptr[i]->y;
|
||||||
|
|
||||||
if ((sameside(&maskeq, &spr, &pos) == 0) && sameside(&p1eq, &middle, &spr) && sameside(&p2eq, &middle, &spr))
|
if ((sameside(&maskeq, &spr, &pos) == 0) && sameside(&p1eq, &middle, &spr) && sameside(&p2eq, &middle, &spr))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1071,7 +1071,7 @@ void polymer_drawsprite(int32_t snum)
|
||||||
i = j = 0;
|
i = j = 0;
|
||||||
while (j < lightcount)
|
while (j < lightcount)
|
||||||
{
|
{
|
||||||
while (prlights[i].flags.active == 0) {
|
while (prlights[i].flags.active == 0 || prlights[i].flags.display == 0) {
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3279,7 +3279,7 @@ static void polymer_drawmdsprite(spritetype *tspr)
|
||||||
i = j = 0;
|
i = j = 0;
|
||||||
while (j < lightcount)
|
while (j < lightcount)
|
||||||
{
|
{
|
||||||
while (prlights[i].flags.active == 0) {
|
while (prlights[i].flags.active == 0 || prlights[i].flags.display == 0) {
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3608,8 +3608,10 @@ static void polymer_getbuildmaterial(_prmaterial* material, int16_t tile
|
||||||
}
|
}
|
||||||
|
|
||||||
// PR_BIT_GLOW_MAP
|
// PR_BIT_GLOW_MAP
|
||||||
|
/*
|
||||||
if (r_fullbrights && pth && pth->flags & 16)
|
if (r_fullbrights && pth && pth->flags & 16)
|
||||||
material->glowmap = pth->ofb->glpic;
|
material->glowmap = pth->ofb->glpic;
|
||||||
|
*/
|
||||||
|
|
||||||
if (hicfindsubst(tilenum, GLOWPAL, 0))
|
if (hicfindsubst(tilenum, GLOWPAL, 0))
|
||||||
{
|
{
|
||||||
|
@ -4121,118 +4123,14 @@ static void polymer_compileprogram(int32_t programbits)
|
||||||
|
|
||||||
// LIGHTS
|
// LIGHTS
|
||||||
|
|
||||||
static void polymer_removelight(int16_t lighti)
|
|
||||||
{
|
|
||||||
int32_t i;
|
|
||||||
_prsector *s;
|
|
||||||
_prwall *w;
|
|
||||||
|
|
||||||
// XXX: might need to store a list of affected planes in the light record
|
|
||||||
// if this loop ends up consuming too much cycles
|
|
||||||
i = 0;
|
|
||||||
while (i < numsectors)
|
|
||||||
{
|
|
||||||
s = prsectors[i];
|
|
||||||
|
|
||||||
polymer_deleteplanelight(&s->floor, lighti);
|
|
||||||
polymer_deleteplanelight(&s->ceil, lighti);
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < numwalls)
|
|
||||||
{
|
|
||||||
w = prwalls[i];
|
|
||||||
|
|
||||||
polymer_deleteplanelight(&w->wall, lighti);
|
|
||||||
polymer_deleteplanelight(&w->over, lighti);
|
|
||||||
polymer_deleteplanelight(&w->mask, lighti);
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void polymer_updatelights(void)
|
|
||||||
{
|
|
||||||
int32_t i;
|
|
||||||
|
|
||||||
while (i < PR_MAXLIGHTS)
|
|
||||||
{
|
|
||||||
if (prlights[i].flags.active && prlights[i].flags.invalidate) {
|
|
||||||
// highly suboptimal
|
|
||||||
polymer_removelight(i);
|
|
||||||
|
|
||||||
if (prlights[i].radius)
|
|
||||||
polymer_processspotlight(&prlights[i]);
|
|
||||||
polymer_culllight(i);
|
|
||||||
|
|
||||||
prlights[i].flags.invalidate = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prlights[i].flags.active)
|
|
||||||
prlights[i].rtindex = -1;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void polymer_resetlights(void)
|
|
||||||
{
|
|
||||||
int32_t i;
|
|
||||||
_prsector *s;
|
|
||||||
_prwall *w;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < numsectors)
|
|
||||||
{
|
|
||||||
s = prsectors[i];
|
|
||||||
|
|
||||||
polymer_resetplanelights(&s->floor);
|
|
||||||
polymer_resetplanelights(&s->ceil);
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < numwalls)
|
|
||||||
{
|
|
||||||
w = prwalls[i];
|
|
||||||
|
|
||||||
polymer_resetplanelights(&w->wall);
|
|
||||||
polymer_resetplanelights(&w->over);
|
|
||||||
polymer_resetplanelights(&w->mask);
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < PR_MAXLIGHTS)
|
|
||||||
{
|
|
||||||
prlights[i].flags.active = 0;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
lightcount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void polymer_resetplanelights(_prplane* plane)
|
|
||||||
{
|
|
||||||
int32_t i;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (i < PR_MAXLIGHTS)
|
|
||||||
{
|
|
||||||
plane->lights[i] = -1;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
plane->lightcount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void polymer_addplanelight(_prplane* plane, int16_t lighti)
|
static void polymer_addplanelight(_prplane* plane, int16_t lighti)
|
||||||
{
|
{
|
||||||
int16_t i;
|
int16_t i;
|
||||||
|
|
||||||
|
if (prlights[lighti].planecnt >= PR_MAXLIGHTS-1)
|
||||||
|
return;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < PR_MAXLIGHTS)
|
while (i < PR_MAXLIGHTS)
|
||||||
{
|
{
|
||||||
|
@ -4240,13 +4138,15 @@ static void polymer_addplanelight(_prplane* plane, int16_t lighti)
|
||||||
{
|
{
|
||||||
plane->lights[i] = lighti;
|
plane->lights[i] = lighti;
|
||||||
plane->lightcount++;
|
plane->lightcount++;
|
||||||
|
prlights[lighti].myplanes[prlights[lighti].planecnt] = plane;
|
||||||
|
prlights[lighti].planecnt++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void polymer_deleteplanelight(_prplane* plane, int16_t lighti)
|
static inline void polymer_deleteplanelight(_prplane* plane, int16_t lighti)
|
||||||
{
|
{
|
||||||
int16_t i;
|
int16_t i;
|
||||||
|
|
||||||
|
@ -4314,6 +4214,118 @@ static void polymer_invalidateplanelights(_prplane* plane)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void polymer_removelight(int16_t lighti)
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
// XXX: might need to store a list of affected planes in the light record
|
||||||
|
// if this loop ends up consuming too much cycles
|
||||||
|
i = prlights[lighti].planecnt-1;
|
||||||
|
while (i >= 0)
|
||||||
|
{
|
||||||
|
polymer_deleteplanelight(prlights[lighti].myplanes[i], lighti);
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void polymer_updatelights(void)
|
||||||
|
{
|
||||||
|
int32_t i, curpriority;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < PR_MAXLIGHTS)
|
||||||
|
prlights[i++].flags.display = 0;
|
||||||
|
|
||||||
|
curpriority = 0;
|
||||||
|
while (curpriority < pr_maxlightpriority)
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
while (prlights[i].priority != curpriority && i < PR_MAXLIGHTS)
|
||||||
|
i++;
|
||||||
|
|
||||||
|
if (i == PR_MAXLIGHTS)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (prlights[i].flags.active)
|
||||||
|
{
|
||||||
|
prlights[i].flags.display = 1;
|
||||||
|
|
||||||
|
if (prlights[i].flags.invalidate)
|
||||||
|
{
|
||||||
|
// highly suboptimal
|
||||||
|
polymer_removelight(i);
|
||||||
|
|
||||||
|
if (prlights[i].radius)
|
||||||
|
polymer_processspotlight(&prlights[i]);
|
||||||
|
polymer_culllight(i);
|
||||||
|
|
||||||
|
prlights[i].flags.invalidate = 0;
|
||||||
|
prlights[i].rtindex = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while (1);
|
||||||
|
curpriority++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void polymer_resetlights(void)
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
_prsector *s;
|
||||||
|
_prwall *w;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < numsectors)
|
||||||
|
{
|
||||||
|
s = prsectors[i];
|
||||||
|
|
||||||
|
polymer_resetplanelights(&s->floor);
|
||||||
|
polymer_resetplanelights(&s->ceil);
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < numwalls)
|
||||||
|
{
|
||||||
|
w = prwalls[i];
|
||||||
|
|
||||||
|
polymer_resetplanelights(&w->wall);
|
||||||
|
polymer_resetplanelights(&w->over);
|
||||||
|
polymer_resetplanelights(&w->mask);
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < PR_MAXLIGHTS)
|
||||||
|
{
|
||||||
|
prlights[i].flags.active = 0;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
lightcount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void polymer_resetplanelights(_prplane* plane)
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (i < PR_MAXLIGHTS)
|
||||||
|
{
|
||||||
|
plane->lights[i] = -1;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
plane->lightcount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void polymer_invalidatesectorlights(int16_t sectnum)
|
static void polymer_invalidatesectorlights(int16_t sectnum)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
@ -4420,6 +4432,9 @@ static inline void polymer_culllight(int16_t lighti)
|
||||||
Bmemset(drawingstate, 0, sizeof(int16_t) * numsectors);
|
Bmemset(drawingstate, 0, sizeof(int16_t) * numsectors);
|
||||||
drawingstate[light->sector] = 1;
|
drawingstate[light->sector] = 1;
|
||||||
|
|
||||||
|
prlights[lighti].planecnt = 0;
|
||||||
|
Bmemset(prlights[lighti].myplanes, 0, sizeof(intptr_t) * PR_MAXLIGHTS);
|
||||||
|
|
||||||
sectorqueue[0] = light->sector;
|
sectorqueue[0] = light->sector;
|
||||||
|
|
||||||
while (front != back)
|
while (front != back)
|
||||||
|
@ -4478,7 +4493,7 @@ static void polymer_prepareshadows(void)
|
||||||
int16_t oviewangle, oglobalang;
|
int16_t oviewangle, oglobalang;
|
||||||
int32_t ocosglobalang, osinglobalang;
|
int32_t ocosglobalang, osinglobalang;
|
||||||
int32_t ocosviewingrangeglobalang, osinviewingrangeglobalang;
|
int32_t ocosviewingrangeglobalang, osinviewingrangeglobalang;
|
||||||
int32_t i, j, k;
|
int32_t i, j;
|
||||||
int32_t gx, gy, gz;
|
int32_t gx, gy, gz;
|
||||||
int32_t oldoverridematerial;
|
int32_t oldoverridematerial;
|
||||||
|
|
||||||
|
@ -4494,11 +4509,11 @@ static void polymer_prepareshadows(void)
|
||||||
ocosviewingrangeglobalang = cosviewingrangeglobalang;
|
ocosviewingrangeglobalang = cosviewingrangeglobalang;
|
||||||
osinviewingrangeglobalang = sinviewingrangeglobalang;
|
osinviewingrangeglobalang = sinviewingrangeglobalang;
|
||||||
|
|
||||||
i = j = k = 0;
|
i = j = 0;
|
||||||
|
|
||||||
while ((k < lightcount) && (j < pr_shadowcount))
|
while ((i < lightcount) && (j < pr_shadowcount))
|
||||||
{
|
{
|
||||||
while (prlights[i].flags.active == 0) {
|
while ((prlights[i].flags.active == 0 || prlights[i].flags.display == 0) && i < lightcount) {
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4559,7 +4574,6 @@ static void polymer_prepareshadows(void)
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
k++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
globalposx = gx;
|
globalposx = gx;
|
||||||
|
|
|
@ -419,8 +419,12 @@ void A_DeleteSprite(int32_t s)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
if (getrendermode() == 4 && ActorExtra[s].lightId != -1)
|
if (getrendermode() == 4 && ActorExtra[s].lightptr != NULL)
|
||||||
|
{
|
||||||
polymer_deletelight(ActorExtra[s].lightId);
|
polymer_deletelight(ActorExtra[s].lightId);
|
||||||
|
ActorExtra[s].lightId = -1;
|
||||||
|
ActorExtra[s].lightptr = NULL;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
deletesprite(s);
|
deletesprite(s);
|
||||||
|
@ -578,6 +582,56 @@ static void ms(int32_t i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void G_AddGameLight(int32_t radius, int32_t srcsprite, int32_t zoffset, int32_t range, int32_t color, int32_t priority)
|
||||||
|
{
|
||||||
|
#ifdef POLYMER
|
||||||
|
spritetype *s = &sprite[srcsprite];
|
||||||
|
if (ActorExtra[srcsprite].lightptr == NULL)
|
||||||
|
{
|
||||||
|
_prlight mylight;
|
||||||
|
|
||||||
|
mylight.sector = s->sectnum;
|
||||||
|
mylight.x = s->x;
|
||||||
|
mylight.y = s->y;
|
||||||
|
mylight.z = s->z-zoffset;
|
||||||
|
mylight.color[0] = color&255;
|
||||||
|
mylight.color[1] = (color>>8)&255;
|
||||||
|
mylight.color[2] = (color>>16)&255;
|
||||||
|
mylight.radius = radius;
|
||||||
|
mylight.range = range;
|
||||||
|
|
||||||
|
mylight.priority = priority;
|
||||||
|
|
||||||
|
ActorExtra[srcsprite].lightId = polymer_addlight(&mylight);
|
||||||
|
ActorExtra[srcsprite].lightptr = &prlights[ActorExtra[srcsprite].lightId];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
s->z -= zoffset;
|
||||||
|
if (radius != prlights[ActorExtra[srcsprite].lightId].radius ||
|
||||||
|
range != prlights[ActorExtra[srcsprite].lightId].range ||
|
||||||
|
Bmemcmp(&sprite[srcsprite], ActorExtra[srcsprite].lightptr, sizeof(int32_t) * 3))
|
||||||
|
{
|
||||||
|
Bmemcpy(ActorExtra[srcsprite].lightptr, &sprite[srcsprite], sizeof(int32_t) * 3);
|
||||||
|
ActorExtra[srcsprite].lightptr->sector = s->sectnum;
|
||||||
|
ActorExtra[srcsprite].lightptr->radius = radius;
|
||||||
|
ActorExtra[srcsprite].lightptr->range = range;
|
||||||
|
ActorExtra[srcsprite].lightptr->flags.invalidate = 1;
|
||||||
|
}
|
||||||
|
s->z += zoffset;
|
||||||
|
|
||||||
|
#else
|
||||||
|
UNREFERENCED_PARAMETER(radius);
|
||||||
|
UNREFERENCED_PARAMETER(sector);
|
||||||
|
UNREFERENCED_PARAMETER(x);
|
||||||
|
UNREFERENCED_PARAMETER(y);
|
||||||
|
UNREFERENCED_PARAMETER(z);
|
||||||
|
UNREFERENCED_PARAMETER(range);
|
||||||
|
UNREFERENCED_PARAMETER(color);
|
||||||
|
UNREFERENCED_PARAMETER(priority);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// sleeping monsters, etc
|
// sleeping monsters, etc
|
||||||
static void G_MoveZombieActors(void)
|
static void G_MoveZombieActors(void)
|
||||||
{
|
{
|
||||||
|
@ -605,10 +659,10 @@ static void G_MoveZombieActors(void)
|
||||||
case FLOORFLAME__STATIC:
|
case FLOORFLAME__STATIC:
|
||||||
case FIREBARREL__STATIC:
|
case FIREBARREL__STATIC:
|
||||||
case FIREVASE__STATIC:
|
case FIREVASE__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
break;
|
break;
|
||||||
case ATOMICHEALTH__STATIC:
|
case ATOMICHEALTH__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIRE__STATIC:
|
case FIRE__STATIC:
|
||||||
|
@ -617,7 +671,7 @@ static void G_MoveZombieActors(void)
|
||||||
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
||||||
if (s->z > ActorExtra[i].floorz+2048) break;
|
if (s->z > ActorExtra[i].floorz+2048) break;
|
||||||
*/
|
*/
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->xrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->xrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
break;
|
break;
|
||||||
case BURNING__STATIC:
|
case BURNING__STATIC:
|
||||||
case BURNING2__STATIC:
|
case BURNING2__STATIC:
|
||||||
|
@ -625,19 +679,19 @@ static void G_MoveZombieActors(void)
|
||||||
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
||||||
if (s->z > ActorExtra[i].floorz + 2048) break;
|
if (s->z > ActorExtra[i].floorz + 2048) break;
|
||||||
*/
|
*/
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->xrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->xrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXPLOSION2__STATIC:
|
case EXPLOSION2__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 255+(95<<8),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 255+(95<<8),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
case FORCERIPPLE__STATIC:
|
case FORCERIPPLE__STATIC:
|
||||||
// case TRANSPORTERSTAR__STATIC:
|
// case TRANSPORTERSTAR__STATIC:
|
||||||
case TRANSPORTERBEAM__STATIC:
|
case TRANSPORTERBEAM__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 80+(80<<8)+(255<<16),PR_LIGHT_PRIO_LOW_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 80+(80<<8)+(255<<16),PR_LIGHT_PRIO_LOW_GAME);
|
||||||
break;
|
break;
|
||||||
case SHRINKEREXPLOSION__STATIC:
|
case SHRINKEREXPLOSION__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1763,7 +1817,7 @@ static void G_MoveStandables(void)
|
||||||
if (s->picnum == OOZFILTER || s->picnum == SEENINE || s->picnum == SEENINEDEAD || s->picnum == (SEENINEDEAD+1))
|
if (s->picnum == OOZFILTER || s->picnum == SEENINE || s->picnum == SEENINEDEAD || s->picnum == (SEENINEDEAD+1))
|
||||||
{
|
{
|
||||||
if (s->picnum == OOZFILTER && s->xrepeat)
|
if (s->picnum == OOZFILTER && s->xrepeat)
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 6144, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 6144, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
if (s->shade != -32 && s->shade != -33)
|
if (s->shade != -32 && s->shade != -33)
|
||||||
{
|
{
|
||||||
if (s->xrepeat)
|
if (s->xrepeat)
|
||||||
|
@ -2190,7 +2244,7 @@ CLEAR_THE_BOLT:
|
||||||
case FLOORFLAME__STATIC:
|
case FLOORFLAME__STATIC:
|
||||||
case FIREBARREL__STATIC:
|
case FIREBARREL__STATIC:
|
||||||
case FIREVASE__STATIC:
|
case FIREVASE__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
case EXPLODINGBARREL__STATIC:
|
case EXPLODINGBARREL__STATIC:
|
||||||
case WOODENHORSE__STATIC:
|
case WOODENHORSE__STATIC:
|
||||||
case HORSEONSIDE__STATIC:
|
case HORSEONSIDE__STATIC:
|
||||||
|
@ -2295,7 +2349,7 @@ static void G_MoveWeapons(void)
|
||||||
Bmemcpy(&davect,s,sizeof(vec3_t));
|
Bmemcpy(&davect,s,sizeof(vec3_t));
|
||||||
|
|
||||||
if (ActorExtra[i].projectile.flashcolor)
|
if (ActorExtra[i].projectile.flashcolor)
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, ActorExtra[i].projectile.flashcolor,PR_LIGHT_PRIO_LOW_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, ActorExtra[i].projectile.flashcolor,PR_LIGHT_PRIO_LOW_GAME);
|
||||||
|
|
||||||
if (ActorExtra[i].projectile.workslike & PROJECTILE_BOUNCESOFFWALLS)
|
if (ActorExtra[i].projectile.workslike & PROJECTILE_BOUNCESOFFWALLS)
|
||||||
{
|
{
|
||||||
|
@ -2741,21 +2795,21 @@ static void G_MoveWeapons(void)
|
||||||
switch (DynamicTileMap[s->picnum])
|
switch (DynamicTileMap[s->picnum])
|
||||||
{
|
{
|
||||||
case FREEZEBLAST__STATIC:
|
case FREEZEBLAST__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case COOLEXPLOSION1__STATIC:
|
case COOLEXPLOSION1__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 128+(0<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 4096, 128+(0<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHRINKSPARK__STATIC:
|
case SHRINKSPARK__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
case FIRELASER__STATIC:
|
case FIRELASER__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_LOW_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_LOW_GAME);
|
||||||
break;
|
break;
|
||||||
case RPG__STATIC:
|
case RPG__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_LOW_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_LOW_GAME);
|
||||||
|
|
||||||
if (DynamicTileMap[s->picnum] == RPG__STATIC && ActorExtra[i].picnum != BOSS2 &&
|
if (DynamicTileMap[s->picnum] == RPG__STATIC && ActorExtra[i].picnum != BOSS2 &&
|
||||||
s->xrepeat >= 10 && sector[s->sectnum].lotag != 2)
|
s->xrepeat >= 10 && sector[s->sectnum].lotag != 2)
|
||||||
|
@ -3401,7 +3455,7 @@ static void G_MoveActors(void)
|
||||||
switch (DynamicTileMap[switchpicnum])
|
switch (DynamicTileMap[switchpicnum])
|
||||||
{
|
{
|
||||||
case ATOMICHEALTH__STATIC:
|
case ATOMICHEALTH__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIRE__STATIC:
|
case FIRE__STATIC:
|
||||||
|
@ -3410,7 +3464,7 @@ static void G_MoveActors(void)
|
||||||
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
||||||
if (s->z > ActorExtra[i].floorz+2048) break;
|
if (s->z > ActorExtra[i].floorz+2048) break;
|
||||||
*/
|
*/
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->xrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->xrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DUCK__STATIC:
|
case DUCK__STATIC:
|
||||||
|
@ -5165,20 +5219,20 @@ static void G_MoveMisc(void) // STATNUM 5
|
||||||
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
if (ActorExtra[i].floorz - ActorExtra[i].ceilingz < 128) break;
|
||||||
if (s->z > ActorExtra[i].floorz + 2048) break;
|
if (s->z > ActorExtra[i].floorz + 2048) break;
|
||||||
*/
|
*/
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 64 * s->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXPLOSION2__STATIC:
|
case EXPLOSION2__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1),
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1),
|
||||||
(512 * s->yrepeat) / (ActorExtra[i].temp_data[2]+1), 255+(95<<8),PR_LIGHT_PRIO_HIGH_GAME);
|
(512 * s->yrepeat) / (ActorExtra[i].temp_data[2]+1), 255+(95<<8),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
case FORCERIPPLE__STATIC:
|
case FORCERIPPLE__STATIC:
|
||||||
// case TRANSPORTERSTAR__STATIC:
|
// case TRANSPORTERSTAR__STATIC:
|
||||||
case TRANSPORTERBEAM__STATIC:
|
case TRANSPORTERBEAM__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 80+(80<<8)+(255<<16),PR_LIGHT_PRIO_LOW_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 80+(80<<8)+(255<<16),PR_LIGHT_PRIO_LOW_GAME);
|
||||||
break;
|
break;
|
||||||
case SHRINKEREXPLOSION__STATIC:
|
case SHRINKEREXPLOSION__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x, s->y, s->z-((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
G_AddGameLight(0, i, ((s->yrepeat*tilesizy[s->picnum])<<1), 2048, 128+(255<<8)+(128<<16),PR_LIGHT_PRIO_HIGH_GAME);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!actorscrptr[sprite[i].picnum])
|
if (!actorscrptr[sprite[i].picnum])
|
||||||
|
@ -7535,81 +7589,108 @@ static void G_MoveEffectors(void) //STATNUM 3
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
case 49:
|
case 49:
|
||||||
{
|
{
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = SECT;
|
if (ActorExtra[i].lightptr == NULL)
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = SX;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = SY;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].z = SZ;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].range = SHT;
|
|
||||||
if ((sprite[i].xvel | sprite[i].yvel | sprite[i].zvel) != 0)
|
|
||||||
{
|
{
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[0] = sprite[i].xvel;
|
_prlight mylight;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[1] = sprite[i].yvel;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[2] = sprite[i].zvel;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[0] = hictinting[PL].r;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[1] = hictinting[PL].g;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[2] = hictinting[PL].b;
|
|
||||||
}
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].radius = 0;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].angle = SA;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].horiz = SH;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].minshade = sprite[i].xoffset;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].maxshade = sprite[i].yoffset;
|
|
||||||
|
|
||||||
if (CS & 2)
|
mylight.sector = SECT;
|
||||||
{
|
mylight.x = SX;
|
||||||
if (CS & 512)
|
mylight.y = SY;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = PR_LIGHT_PRIO_LOW;
|
mylight.z = SZ;
|
||||||
|
mylight.range = SHT;
|
||||||
|
if ((sprite[i].xvel | sprite[i].yvel | sprite[i].zvel) != 0)
|
||||||
|
{
|
||||||
|
mylight.color[0] = sprite[i].xvel;
|
||||||
|
mylight.color[1] = sprite[i].yvel;
|
||||||
|
mylight.color[2] = sprite[i].zvel;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = PR_LIGHT_PRIO_HIGH;
|
{
|
||||||
}
|
mylight.color[0] = hictinting[PL].r;
|
||||||
else
|
mylight.color[1] = hictinting[PL].g;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = PR_LIGHT_PRIO_MAX;
|
mylight.color[2] = hictinting[PL].b;
|
||||||
|
}
|
||||||
|
mylight.radius = 0;
|
||||||
|
mylight.angle = SA;
|
||||||
|
mylight.horiz = SH;
|
||||||
|
mylight.minshade = sprite[i].xoffset;
|
||||||
|
mylight.maxshade = sprite[i].yoffset;
|
||||||
|
|
||||||
if (gamelightcount < PR_MAXLIGHTS)
|
if (CS & 2)
|
||||||
gamelightcount++;
|
{
|
||||||
|
if (CS & 512)
|
||||||
|
mylight.priority = PR_LIGHT_PRIO_LOW;
|
||||||
|
else
|
||||||
|
mylight.priority = PR_LIGHT_PRIO_HIGH;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mylight.priority = PR_LIGHT_PRIO_MAX;
|
||||||
|
|
||||||
|
ActorExtra[i].lightId = polymer_addlight(&mylight);
|
||||||
|
ActorExtra[i].lightptr = &prlights[ActorExtra[i].lightId];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Bmemcmp(&sprite[i], ActorExtra[i].lightptr, sizeof(int32_t) * 3))
|
||||||
|
{
|
||||||
|
Bmemcpy(ActorExtra[i].lightptr, &sprite[i], sizeof(int32_t) * 3);
|
||||||
|
ActorExtra[i].lightptr->sector = sprite[i].sectnum;
|
||||||
|
ActorExtra[i].lightptr->flags.invalidate = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 50:
|
case 50:
|
||||||
{
|
{
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = SECT;
|
if (ActorExtra[i].lightptr == NULL)
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = SX;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = SY;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].z = SZ;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].range = SHT;
|
|
||||||
if ((sprite[i].xvel | sprite[i].yvel | sprite[i].zvel) != 0)
|
|
||||||
{
|
{
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[0] = sprite[i].xvel;
|
_prlight mylight;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[1] = sprite[i].yvel;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[2] = sprite[i].zvel;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[0] = hictinting[PL].r;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[1] = hictinting[PL].g;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[2] = hictinting[PL].b;
|
|
||||||
}
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].radius = (256-(SS+128))<<1;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].faderadius = gamelights[gamelightcount&(PR_MAXLIGHTS-1)].radius * 0.75;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].angle = SA;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].horiz = SH;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].minshade = sprite[i].xoffset;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].maxshade = sprite[i].yoffset;
|
|
||||||
|
|
||||||
if (CS & 2)
|
mylight.sector = SECT;
|
||||||
{
|
mylight.x = SX;
|
||||||
if (CS & 512)
|
mylight.y = SY;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = PR_LIGHT_PRIO_LOW;
|
mylight.z = SZ;
|
||||||
|
mylight.range = SHT;
|
||||||
|
if ((sprite[i].xvel | sprite[i].yvel | sprite[i].zvel) != 0)
|
||||||
|
{
|
||||||
|
mylight.color[0] = sprite[i].xvel;
|
||||||
|
mylight.color[1] = sprite[i].yvel;
|
||||||
|
mylight.color[2] = sprite[i].zvel;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = PR_LIGHT_PRIO_HIGH;
|
{
|
||||||
}
|
mylight.color[0] = hictinting[PL].r;
|
||||||
else
|
mylight.color[1] = hictinting[PL].g;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = PR_LIGHT_PRIO_MAX;
|
mylight.color[2] = hictinting[PL].b;
|
||||||
|
}
|
||||||
|
mylight.radius = (256-(SS+128))<<1;
|
||||||
|
mylight.faderadius = (int16_t)(mylight.radius * 0.75);
|
||||||
|
mylight.angle = SA;
|
||||||
|
mylight.horiz = SH;
|
||||||
|
mylight.minshade = sprite[i].xoffset;
|
||||||
|
mylight.maxshade = sprite[i].yoffset;
|
||||||
|
|
||||||
|
if (CS & 2)
|
||||||
|
{
|
||||||
|
if (CS & 512)
|
||||||
|
mylight.priority = PR_LIGHT_PRIO_LOW;
|
||||||
|
else
|
||||||
|
mylight.priority = PR_LIGHT_PRIO_HIGH;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mylight.priority = PR_LIGHT_PRIO_MAX;
|
||||||
|
|
||||||
|
ActorExtra[i].lightId = polymer_addlight(&mylight);
|
||||||
|
ActorExtra[i].lightptr = &prlights[ActorExtra[i].lightId];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Bmemcmp(&sprite[i], ActorExtra[i].lightptr, sizeof(int32_t) * 3))
|
||||||
|
{
|
||||||
|
Bmemcpy(ActorExtra[i].lightptr, &sprite[i], sizeof(int32_t) * 3);
|
||||||
|
ActorExtra[i].lightptr->sector = sprite[i].sectnum;
|
||||||
|
ActorExtra[i].lightptr->flags.invalidate = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (gamelightcount < PR_MAXLIGHTS)
|
|
||||||
gamelightcount++;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif // POLYMER
|
#endif // POLYMER
|
||||||
|
|
|
@ -548,6 +548,7 @@ typedef struct {
|
||||||
projectile_t projectile;
|
projectile_t projectile;
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
int16_t lightId;
|
int16_t lightId;
|
||||||
|
int16_t lightcount; // how many tics until light is killed
|
||||||
_prlight *lightptr;
|
_prlight *lightptr;
|
||||||
#endif
|
#endif
|
||||||
} ActorData_t;
|
} ActorData_t;
|
||||||
|
|
|
@ -276,38 +276,7 @@ static inline int32_t G_GetTeamPalette(int32_t team)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void G_AddGameLight(int32_t radius, int32_t sector, int32_t x, int32_t y, int32_t z, int32_t range, int32_t color, int32_t priority)
|
extern inline void G_AddGameLight(int32_t radius, int32_t srcsprite, int32_t zoffset, int32_t range, int32_t color, int32_t priority);
|
||||||
{
|
|
||||||
#ifdef POLYMER
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].radius = radius;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = sector;
|
|
||||||
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = x;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = y;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].z = z;
|
|
||||||
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].range = range;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].range -= rand()%((gamelights[gamelightcount&(PR_MAXLIGHTS-1)].range>>3)+1);
|
|
||||||
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[0] = color&255;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[1] = (color>>8)&255;
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].color[2] = (color>>16)&255;
|
|
||||||
|
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].priority = priority;
|
|
||||||
|
|
||||||
if (gamelightcount < PR_MAXLIGHTS)
|
|
||||||
gamelightcount++;
|
|
||||||
#else
|
|
||||||
UNREFERENCED_PARAMETER(radius);
|
|
||||||
UNREFERENCED_PARAMETER(sector);
|
|
||||||
UNREFERENCED_PARAMETER(x);
|
|
||||||
UNREFERENCED_PARAMETER(y);
|
|
||||||
UNREFERENCED_PARAMETER(z);
|
|
||||||
UNREFERENCED_PARAMETER(range);
|
|
||||||
UNREFERENCED_PARAMETER(color);
|
|
||||||
UNREFERENCED_PARAMETER(priority);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
extern void se40code(int32_t x,int32_t y,int32_t z,int32_t a,int32_t h, int32_t smoothratio);
|
extern void se40code(int32_t x,int32_t y,int32_t z,int32_t a,int32_t h, int32_t smoothratio);
|
||||||
|
|
||||||
|
|
|
@ -4541,9 +4541,6 @@ void G_DrawRooms(int32_t snum,int32_t smoothratio)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
drawrooms(ud.camerax,ud.cameray,ud.cameraz,ud.cameraang,ud.camerahoriz,ud.camerasect);
|
drawrooms(ud.camerax,ud.cameray,ud.cameraz,ud.cameraang,ud.camerahoriz,ud.camerasect);
|
||||||
#ifdef POLYMER
|
|
||||||
framelightcount = 0;
|
|
||||||
#endif
|
|
||||||
G_DoSpriteAnimations(ud.camerax,ud.cameray,ud.cameraang,smoothratio);
|
G_DoSpriteAnimations(ud.camerax,ud.cameray,ud.cameraang,smoothratio);
|
||||||
drawmasks();
|
drawmasks();
|
||||||
|
|
||||||
|
@ -5541,7 +5538,7 @@ int32_t A_Spawn(int32_t j, int32_t pn)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXPLOSION2__STATIC:
|
case EXPLOSION2__STATIC:
|
||||||
G_AddGameLight(0, sp->sectnum, sp->x, sp->y, sp->z-((sp->yrepeat*tilesizy[sp->picnum])<<1), 8192, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
G_AddGameLight(0, i, ((sp->yrepeat*tilesizy[sp->picnum])<<1), 8192, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
case EXPLOSION2BOT__STATIC:
|
case EXPLOSION2BOT__STATIC:
|
||||||
case BURNING__STATIC:
|
case BURNING__STATIC:
|
||||||
case BURNING2__STATIC:
|
case BURNING2__STATIC:
|
||||||
|
|
|
@ -4541,6 +4541,18 @@ void A_Execute(int32_t iActor,int32_t iPlayer,int32_t lDist)
|
||||||
vm.g_t[3] = 0;
|
vm.g_t[3] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef POLYMER
|
||||||
|
if (getrendermode() == 4 && ActorExtra[vm.g_i].lightptr != NULL && ActorExtra[vm.g_i].lightcount)
|
||||||
|
{
|
||||||
|
if (!(--ActorExtra[vm.g_i].lightcount))
|
||||||
|
{
|
||||||
|
polymer_deletelight(ActorExtra[vm.g_i].lightId);
|
||||||
|
ActorExtra[vm.g_i].lightId = -1;
|
||||||
|
ActorExtra[vm.g_i].lightptr = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
while (!X_DoExecute());
|
while (!X_DoExecute());
|
||||||
|
|
||||||
if (vm.g_killitFlag == 1)
|
if (vm.g_killitFlag == 1)
|
||||||
|
|
|
@ -353,9 +353,17 @@ int32_t A_Shoot(int32_t i,int32_t atwith)
|
||||||
case CHAINGUN__STATIC:
|
case CHAINGUN__STATIC:
|
||||||
case RPG__STATIC:
|
case RPG__STATIC:
|
||||||
case MORTER__STATIC:
|
case MORTER__STATIC:
|
||||||
G_AddGameLight(0, s->sectnum, s->x+((sintable[(s->ang+512)&2047])>>7),
|
{
|
||||||
s->y+((sintable[(s->ang)&2047])>>7), s->z-PHEIGHT, 8192, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
int32_t x = ((sintable[(s->ang+512)&2047])>>7), y = ((sintable[(s->ang)&2047])>>7);
|
||||||
|
s-> x += x;
|
||||||
|
s-> y += y;
|
||||||
|
G_AddGameLight(0, i, PHEIGHT, 8192, 255+(95<<8),PR_LIGHT_PRIO_MAX_GAME);
|
||||||
|
ActorExtra[i].lightcount = 2;
|
||||||
|
s-> x -= x;
|
||||||
|
s-> y -= y;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = s->sectnum;
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = s->sectnum;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = s->x+((sintable[(s->ang+512)&2047])>>4);
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = s->x+((sintable[(s->ang+512)&2047])>>4);
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = s->y+((sintable[(s->ang)&2047])>>4);
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = s->y+((sintable[(s->ang)&2047])>>4);
|
||||||
|
@ -376,6 +384,7 @@ int32_t A_Shoot(int32_t i,int32_t atwith)
|
||||||
|
|
||||||
if (gamelightcount < PR_MAXLIGHTS)
|
if (gamelightcount < PR_MAXLIGHTS)
|
||||||
gamelightcount++;
|
gamelightcount++;
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif // POLYMER
|
#endif // POLYMER
|
||||||
|
@ -388,8 +397,16 @@ int32_t A_Shoot(int32_t i,int32_t atwith)
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
if (ProjectileData[atwith].flashcolor)
|
if (ProjectileData[atwith].flashcolor)
|
||||||
{
|
{
|
||||||
G_AddGameLight(0, s->sectnum, s->x+((sintable[(s->ang+512)&2047])>>7),
|
int32_t x = ((sintable[(s->ang+512)&2047])>>7), y = ((sintable[(s->ang)&2047])>>7);
|
||||||
s->y+((sintable[(s->ang)&2047])>>7), s->z-PHEIGHT, 8192, ProjectileData[atwith].flashcolor,PR_LIGHT_PRIO_MAX_GAME);
|
|
||||||
|
s-> x += x;
|
||||||
|
s-> y += y;
|
||||||
|
G_AddGameLight(0, i, PHEIGHT, 8192, ProjectileData[atwith].flashcolor,PR_LIGHT_PRIO_MAX_GAME);
|
||||||
|
ActorExtra[i].lightcount = 2;
|
||||||
|
s-> x -= x;
|
||||||
|
s-> y -= y;
|
||||||
|
|
||||||
|
/*
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = s->sectnum;
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = s->sectnum;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = s->x+((sintable[(s->ang+512)&2047])>>4);
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = s->x+((sintable[(s->ang+512)&2047])>>4);
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = s->y+((sintable[(s->ang)&2047])>>4);
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = s->y+((sintable[(s->ang)&2047])>>4);
|
||||||
|
@ -410,6 +427,7 @@ int32_t A_Shoot(int32_t i,int32_t atwith)
|
||||||
|
|
||||||
if (gamelightcount < PR_MAXLIGHTS)
|
if (gamelightcount < PR_MAXLIGHTS)
|
||||||
gamelightcount++;
|
gamelightcount++;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
#endif // POLYMER
|
#endif // POLYMER
|
||||||
|
|
||||||
|
@ -2176,6 +2194,7 @@ void P_FireWeapon(DukePlayer_t *p)
|
||||||
{
|
{
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
spritetype *s = &sprite[p->i];
|
spritetype *s = &sprite[p->i];
|
||||||
|
int32_t x = ((sintable[(s->ang+512)&2047])>>7), y = ((sintable[(s->ang)&2047])>>7);
|
||||||
#endif // POLYMER
|
#endif // POLYMER
|
||||||
|
|
||||||
|
|
||||||
|
@ -2183,9 +2202,13 @@ void P_FireWeapon(DukePlayer_t *p)
|
||||||
p->visibility = 0;
|
p->visibility = 0;
|
||||||
|
|
||||||
#ifdef POLYMER
|
#ifdef POLYMER
|
||||||
G_AddGameLight(0, s->sectnum, s->x+((sintable[(p->ang+512)&2047])>>7), s->y+((sintable[(p->ang)&2047])>>7),
|
s->x += x;
|
||||||
s->z-PHEIGHT, 8192, aplWeaponFlashColor[p->curr_weapon][snum],PR_LIGHT_PRIO_MAX_GAME);
|
s->y += y;
|
||||||
|
G_AddGameLight(0, p->i, PHEIGHT, 8192, aplWeaponFlashColor[p->curr_weapon][snum],PR_LIGHT_PRIO_MAX_GAME);
|
||||||
|
ActorExtra[p->i].lightcount = 2;
|
||||||
|
s->x -= x;
|
||||||
|
s->y -= y;
|
||||||
|
/*
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = s->sectnum;
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].sector = s->sectnum;
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = s->x+((sintable[(p->ang+512)&2047])>>4);
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].x = s->x+((sintable[(p->ang+512)&2047])>>4);
|
||||||
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = s->y+((sintable[(p->ang)&2047])>>4);
|
gamelights[gamelightcount&(PR_MAXLIGHTS-1)].y = s->y+((sintable[(p->ang)&2047])>>4);
|
||||||
|
@ -2206,6 +2229,7 @@ void P_FireWeapon(DukePlayer_t *p)
|
||||||
|
|
||||||
if (gamelightcount < PR_MAXLIGHTS)
|
if (gamelightcount < PR_MAXLIGHTS)
|
||||||
gamelightcount++;
|
gamelightcount++;
|
||||||
|
*/
|
||||||
#endif // POLYMER
|
#endif // POLYMER
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue