git-svn-id: https://svn.eduke32.com/eduke32@927 1a8010ca-5511-0410-912e-c29ae57300e0

This commit is contained in:
terminx 2008-08-01 12:34:18 +00:00
parent b1a5b6be67
commit 95297e60e9
7 changed files with 28 additions and 17 deletions

View file

@ -6289,6 +6289,7 @@ killsprite:
{ {
#if defined(USE_OPENGL) && defined(POLYMOST) #if defined(USE_OPENGL) && defined(POLYMOST)
curpolygonoffset = 0; curpolygonoffset = 0;
cullcheckcnt = 0;
#endif #endif
pos.x = globalposx; pos.x = globalposx;
pos.y = globalposy; pos.y = globalposy;
@ -6356,11 +6357,14 @@ killsprite:
else else
{ {
curpolygonoffset = 0; curpolygonoffset = 0;
cullcheckcnt = 0;
j = spritesortcnt; j = spritesortcnt;
k = maskwallcnt; k = maskwallcnt;
while (j > 0) drawsprite(--j); while (j > 0) drawsprite(--j);
while (k > 0) drawmaskwall(--k); while (k > 0) drawmaskwall(--k);
if (totalclock < lastcullcheck - CULL_DELAY)
lastcullcheck = totalclock;
if (totalclock >= lastcullcheck + CULL_DELAY) if (totalclock >= lastcullcheck + CULL_DELAY)
lastcullcheck = (totalclock + CULL_DELAY); lastcullcheck = (totalclock + CULL_DELAY);
} }

View file

@ -176,8 +176,6 @@ int r_parallaxskypanning = 0;
// line of sight checks before mddraw() // line of sight checks before mddraw()
int r_modelocclusionchecking = 0; int r_modelocclusionchecking = 0;
#define CULL_OFFSET 384
#define CULL_DELAY 2
// fullbright cvar // fullbright cvar
int r_fullbrights = 1; int r_fullbrights = 1;
@ -4439,8 +4437,13 @@ void polymost_drawmaskwall(int damaskwallcnt)
drawpoly(dpx,dpy,n,method); drawpoly(dpx,dpy,n,method);
} }
#define CULL_OFFSET 384
#define CULL_DELAY 2
#define MAXCULLCHECKS 1024
int lastcullcheck = 0; int lastcullcheck = 0;
char cullmodel[MAXSPRITES]; char cullmodel[MAXSPRITES];
int cullcheckcnt = 0;
int polymost_checkcoordinates(int x, int y, spritetype *tspr) int polymost_checkcoordinates(int x, int y, spritetype *tspr)
{ {
@ -4448,7 +4451,7 @@ int polymost_checkcoordinates(int x, int y, spritetype *tspr)
int oldx = x, i, j = (tilesizy[tspr->picnum]*tspr->yrepeat); int oldx = x, i, j = (tilesizy[tspr->picnum]*tspr->yrepeat);
RECHECK: RECHECK:
updatesector(tspr->x+x,tspr->y+y,&datempsectnum); updatesectorz(tspr->x+x,tspr->y+y,tspr->z,&datempsectnum);
if (datempsectnum == -1) if (datempsectnum == -1)
{ {
@ -4460,6 +4463,7 @@ RECHECK:
for (i=4;i>-1;i--) for (i=4;i>-1;i--)
{ {
cullcheckcnt++;
if (cansee(globalposx, globalposy, globalposz, globalcursectnum, if (cansee(globalposx, globalposy, globalposz, globalcursectnum,
tspr->x+x, tspr->y+y, tspr->z-(j*i)-512, datempsectnum)) tspr->x+x, tspr->y+y, tspr->z-(j*i)-512, datempsectnum))
return 1; return 1;
@ -4533,35 +4537,38 @@ void polymost_drawsprite(int snum)
if (mddraw(tspr)) return; if (mddraw(tspr)) return;
break; // else, render as flat sprite break; // else, render as flat sprite
} }
if (r_modelocclusionchecking /*&& modelptr->usesalpha && !(tspr->cstat & 1024)*/) if (r_modelocclusionchecking)
{ {
if (totalclock >= lastcullcheck + CULL_DELAY) if (totalclock >= lastcullcheck + CULL_DELAY && cullcheckcnt < MAXCULLCHECKS && (/*modelptr->usesalpha ||*/ tspr->yrepeat*tilesizy[sprite[tspr->owner].picnum] > 1536 || tspr->xrepeat*tilesizx[sprite[tspr->owner].picnum] > 1536))
{ {
do // this is so gay do // this is so gay
{ {
unsigned int t = getticks()+4;
// don't bother with shadows because processing its owner will take care of it // don't bother with shadows because processing its owner will take care of it
if (tspr->statnum == TSPR_TEMP) if (tspr->statnum == TSPR_TEMP)
break; break;
cullmodel[tspr->owner] = 1; cullmodel[tspr->owner] = 1;
cullcheckcnt++;
if (cansee(globalposx, globalposy, globalposz, globalcursectnum, if (cansee(globalposx, globalposy, globalposz, globalcursectnum,
tspr->x, tspr->y, tspr->z,tspr->sectnum)) tspr->x, tspr->y, tspr->z,tspr->sectnum))
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
if (polymost_checkcoordinates(-CULL_OFFSET, 0, tspr)) if (polymost_checkcoordinates(-CULL_OFFSET, 0, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
if (polymost_checkcoordinates(-CULL_OFFSET, -CULL_OFFSET, tspr)) if (polymost_checkcoordinates(-CULL_OFFSET, -CULL_OFFSET, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
if (polymost_checkcoordinates(CULL_OFFSET, 0, tspr)) if (polymost_checkcoordinates(CULL_OFFSET, 0, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
if (polymost_checkcoordinates(CULL_OFFSET, CULL_OFFSET, tspr)) if (polymost_checkcoordinates(CULL_OFFSET, CULL_OFFSET, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
if (polymost_checkcoordinates(-CULL_OFFSET, CULL_OFFSET, tspr)) if (polymost_checkcoordinates(-CULL_OFFSET, CULL_OFFSET, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
if (polymost_checkcoordinates(0, 0, tspr)) if (polymost_checkcoordinates(0, 0, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; } { cullmodel[tspr->owner] = 0; break; }
break; break;

View file

@ -61,7 +61,7 @@ extern int curbrightness, gammabrightness;
// OpenGL stuff // OpenGL stuff
static char nogl=0; static char nogl=0;
#endif #endif
int vsync=1; int vsync=0;
// input // input
char inputdevices=0; char inputdevices=0;

View file

@ -116,7 +116,7 @@ char offscreenrendering=0;
int glcolourdepth=32; int glcolourdepth=32;
char videomodereset = 0; char videomodereset = 0;
char silentvideomodeswitch = 0; char silentvideomodeswitch = 0;
int vsync=1; int vsync=0;
// input and events // input and events
char inputdevices=0; char inputdevices=0;
char quitevent=0, appactive=1, realfs=0, regrabmouse=0; char quitevent=0, appactive=1, realfs=0, regrabmouse=0;

View file

@ -773,6 +773,7 @@ int32 CONFIG_ReadSetup(void)
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "SoundToggle",&ud.config.SoundToggle); SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "SoundToggle",&ud.config.SoundToggle);
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "MusicToggle",&ud.config.MusicToggle); SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "MusicToggle",&ud.config.MusicToggle);
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "VoiceToggle",&ud.config.VoiceToggle); SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "VoiceToggle",&ud.config.VoiceToggle);
if (ud.config.VoiceToggle == 2) ud.config.VoiceToggle = 5;
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "AmbienceToggle",&ud.config.AmbienceToggle); SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "AmbienceToggle",&ud.config.AmbienceToggle);
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "NumVoices",&ud.config.NumVoices); SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "NumVoices",&ud.config.NumVoices);
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "NumChannels",&ud.config.NumChannels); SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "NumChannels",&ud.config.NumChannels);

View file

@ -865,7 +865,7 @@ void getpackets(void)
if (numlumps == 0) break; if (numlumps == 0) break;
if (ud.config.SoundToggle == 0 || ud.lockout == 1 || ud.config.FXDevice < 0) if (ud.config.SoundToggle == 0 || ud.lockout == 1 || ud.config.FXDevice < 0 || !(ud.config.VoiceToggle & 4))
break; break;
rtsptr = (char *)RTS_GetSound(packbuf[1]-1); rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
if (*rtsptr == 'C') if (*rtsptr == 'C')
@ -4087,7 +4087,6 @@ void displayrooms(int snum,int smoothratio)
ud.camerasect = sprite[p->newowner].sectnum; ud.camerasect = sprite[p->newowner].sectnum;
smoothratio = 65536L; smoothratio = 65536L;
} }
else if (p->over_shoulder_on == 0) else if (p->over_shoulder_on == 0)
{ {
if (ud.viewbob) if (ud.viewbob)
@ -7987,7 +7986,7 @@ static void nonsharedkeys(void)
} }
if (ud.lockout == 0) if (ud.lockout == 0)
if (ud.config.SoundToggle && ALT_IS_PRESSED && (RTS_NumSounds() > 0) && rtsplaying == 0 && ud.config.VoiceToggle) if (ud.config.SoundToggle && ALT_IS_PRESSED && (RTS_NumSounds() > 0) && rtsplaying == 0 && (ud.config.VoiceToggle & 1))
{ {
rtsptr = (char *)RTS_GetSound(i-1); rtsptr = (char *)RTS_GetSound(i-1);
if (*rtsptr == 'C') if (*rtsptr == 'C')

View file

@ -701,7 +701,7 @@ cvarmappings cvar[] =
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 0, 1 }, { "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 0, 1 },
{ "snd_ambience", "snd_ambience: enables/disables ambient sounds", (void*)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 0, 1 }, { "snd_ambience", "snd_ambience: enables/disables ambient sounds", (void*)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 0, 1 },
{ "snd_duketalk", "snd_duketalk: enables/disables Duke's speech", (void*)&ud.config.VoiceToggle, CVAR_INT, 0, 0, 2 }, { "snd_duketalk", "snd_duketalk: enables/disables Duke's speech", (void*)&ud.config.VoiceToggle, CVAR_INT, 0, 0, 5 },
{ "snd_fxvolume", "snd_fxvolume: volume of sound effects", (void*)&ud.config.FXVolume, CVAR_INT, 0, 0, 255 }, { "snd_fxvolume", "snd_fxvolume: volume of sound effects", (void*)&ud.config.FXVolume, CVAR_INT, 0, 0, 255 },
{ "snd_mixrate", "snd_mixrate: sound mixing rate", (void*)&ud.config.MixRate, CVAR_INT, 0, 0, 48000 }, { "snd_mixrate", "snd_mixrate: sound mixing rate", (void*)&ud.config.MixRate, CVAR_INT, 0, 0, 48000 },
{ "snd_musvolume", "snd_musvolume: volume of midi music", (void*)&ud.config.MusicVolume, CVAR_INT, 0, 0, 255 }, { "snd_musvolume", "snd_musvolume: volume of midi music", (void*)&ud.config.MusicVolume, CVAR_INT, 0, 0, 255 },