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

View file

@ -176,8 +176,6 @@ int r_parallaxskypanning = 0;
// line of sight checks before mddraw()
int r_modelocclusionchecking = 0;
#define CULL_OFFSET 384
#define CULL_DELAY 2
// fullbright cvar
int r_fullbrights = 1;
@ -4439,8 +4437,13 @@ void polymost_drawmaskwall(int damaskwallcnt)
drawpoly(dpx,dpy,n,method);
}
#define CULL_OFFSET 384
#define CULL_DELAY 2
#define MAXCULLCHECKS 1024
int lastcullcheck = 0;
char cullmodel[MAXSPRITES];
int cullcheckcnt = 0;
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);
RECHECK:
updatesector(tspr->x+x,tspr->y+y,&datempsectnum);
updatesectorz(tspr->x+x,tspr->y+y,tspr->z,&datempsectnum);
if (datempsectnum == -1)
{
@ -4460,6 +4463,7 @@ RECHECK:
for (i=4;i>-1;i--)
{
cullcheckcnt++;
if (cansee(globalposx, globalposy, globalposz, globalcursectnum,
tspr->x+x, tspr->y+y, tspr->z-(j*i)-512, datempsectnum))
return 1;
@ -4533,35 +4537,38 @@ void polymost_drawsprite(int snum)
if (mddraw(tspr)) return;
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
{
unsigned int t = getticks()+4;
// don't bother with shadows because processing its owner will take care of it
if (tspr->statnum == TSPR_TEMP)
break;
cullmodel[tspr->owner] = 1;
cullcheckcnt++;
if (cansee(globalposx, globalposy, globalposz, globalcursectnum,
tspr->x, tspr->y, tspr->z,tspr->sectnum))
{ 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; }
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; }
if (polymost_checkcoordinates(CULL_OFFSET, 0, tspr))
if (polymost_checkcoordinates(CULL_OFFSET, 0, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ 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; }
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; }
if (polymost_checkcoordinates(0, 0, tspr))
if (polymost_checkcoordinates(0, 0, tspr) || getticks() > t || cullcheckcnt >= MAXCULLCHECKS)
{ cullmodel[tspr->owner] = 0; break; }
break;

View file

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

View file

@ -116,7 +116,7 @@ char offscreenrendering=0;
int glcolourdepth=32;
char videomodereset = 0;
char silentvideomodeswitch = 0;
int vsync=1;
int vsync=0;
// input and events
char inputdevices=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", "MusicToggle",&ud.config.MusicToggle);
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", "NumVoices",&ud.config.NumVoices);
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 (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;
rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
if (*rtsptr == 'C')
@ -4087,7 +4087,6 @@ void displayrooms(int snum,int smoothratio)
ud.camerasect = sprite[p->newowner].sectnum;
smoothratio = 65536L;
}
else if (p->over_shoulder_on == 0)
{
if (ud.viewbob)
@ -7987,7 +7986,7 @@ static void nonsharedkeys(void)
}
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);
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 },
{ "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_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 },