cl_demospeed cvar. 1 = normal speed, < 1 = slow-mo, > 1 = timelaps.

host.h:
	remove Host_SimulationTime prototype
cl_main.c:
	cl_demospeed stuff. Host_SimulationTime was resurected because of gcc
	warnings about setjmp clobbering vars. It's made static inline so its
	resurection doesn't cost fps.
This commit is contained in:
Bill Currie 2001-02-07 20:15:33 +00:00
parent c2194db299
commit 3320cf5e2c
2 changed files with 13 additions and 17 deletions

View file

@ -64,7 +64,6 @@ void Host_Init (void);
void Host_Shutdown(void);
void Host_Error (char *error, ...) __attribute__((format(printf,1,2)));
void Host_EndGame (char *message, ...) __attribute__((format(printf,1,2)));
qboolean Host_SimulationTime(float time);
void Host_Frame (float time);
void Host_Quit_f (void);
void Host_ClientCommands (char *fmt, ...) __attribute__((format(printf,1,2)));

View file

@ -190,6 +190,7 @@ cvar_t *host_speeds; // set for running times
cvar_t *show_fps; // set for running times
cvar_t *show_time;
cvar_t *developer;
cvar_t *cl_demospeed;
int fps_count;
@ -1204,6 +1205,8 @@ CL_Init_Cvars (void)
"display host processing times");
developer = Cvar_Get ("developer", "0", CVAR_NONE,
"show info interesting to developers");
cl_demospeed = Cvar_Get ("cl_demospeed", "1.0", CVAR_NONE,
"adjust demo playback speed. 1.0 = normal, < 1 slow-mo, > 1 timelaps");
// Misty: Turn on or off screen filling colors for powerups among other things.
cl_cshift_bonus = Cvar_Get ("cl_cshift_bonus", "1", CVAR_ARCHIVE,
"Show bonus flash on item pickup");
@ -1374,17 +1377,23 @@ Host_WriteConfiguration (void)
//============================================================================
#if 0
/*
Host_SimulationTime
This determines if enough time has passed to run a simulation frame
*/
qboolean
static inline qboolean
Host_SimulationTime (float time)
{
float fps;
float timescale = 1.0;
if (cls.demoplayback) {
timescale = bound (0.1, cl_demospeed->value, 5);
time *= timescale;
}
realtime += time;
if (oldrealtime > realtime)
oldrealtime = 0;
@ -1393,12 +1402,10 @@ Host_SimulationTime (float time)
else
fps = max (30.0, min (rate->value / 80.0, 72.0));
if (!cls.timedemo && (realtime + time) - oldrealtime < 1.0 / fps)
if (!cls.timedemo && realtime - oldrealtime < timescale / fps)
return false; // framerate is too high
return true;
}
#endif
/*
Host_Frame
@ -1413,22 +1420,12 @@ Host_Frame (float time)
static double time2 = 0;
static double time3 = 0;
int pass1, pass2, pass3;
float fps;
if (setjmp (host_abort)) // something bad happened, or the server disconnected
return;
// decide the simulation time
realtime += time;
if (oldrealtime > realtime)
oldrealtime = 0;
if (cl_maxfps->value)
fps = max (30.0, min (cl_maxfps->value, 72.0));
else
fps = max (30.0, min (rate->value / 80.0, 72.0));
if (!cls.timedemo && realtime - oldrealtime < 1.0 / fps)
if (!Host_SimulationTime (time))
return; // framerate is too high
host_frametime = realtime - oldrealtime;