Adding a few tiny optimisations and playdemo working on qwd files again.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@470 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
2fc07546f0
commit
ac284a1b94
13 changed files with 626 additions and 51 deletions
|
@ -152,6 +152,7 @@ qboolean CL_GetDemoMessage (void)
|
||||||
float demotime;
|
float demotime;
|
||||||
qbyte c, msecsadded;
|
qbyte c, msecsadded;
|
||||||
usercmd_t *pcmd;
|
usercmd_t *pcmd;
|
||||||
|
q1usercmd_t q1cmd;
|
||||||
|
|
||||||
static float prevtime = 0;
|
static float prevtime = 0;
|
||||||
|
|
||||||
|
@ -308,7 +309,7 @@ readnext:
|
||||||
// user sent input
|
// user sent input
|
||||||
i = cls.netchan.outgoing_sequence & UPDATE_MASK;
|
i = cls.netchan.outgoing_sequence & UPDATE_MASK;
|
||||||
pcmd = &cl.frames[i].cmd[0];
|
pcmd = &cl.frames[i].cmd[0];
|
||||||
r = fread (pcmd, sizeof(*pcmd), 1, cls.demofile);
|
r = fread (&q1cmd, sizeof(q1cmd), 1, cls.demofile);
|
||||||
if (r != 1)
|
if (r != 1)
|
||||||
{
|
{
|
||||||
CL_StopPlayback ();
|
CL_StopPlayback ();
|
||||||
|
@ -316,10 +317,17 @@ readnext:
|
||||||
}
|
}
|
||||||
// byte order stuff
|
// byte order stuff
|
||||||
for (j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
||||||
pcmd->angles[j] = LittleFloat(pcmd->angles[j]);
|
{
|
||||||
pcmd->forwardmove = LittleShort(pcmd->forwardmove);
|
q1cmd.angles[j] = LittleFloat(q1cmd.angles[j]);
|
||||||
pcmd->sidemove = LittleShort(pcmd->sidemove);
|
pcmd->angles[j] = ((int)(q1cmd.angles[j]*65536.0/360)&65535);
|
||||||
pcmd->upmove = LittleShort(pcmd->upmove);
|
}
|
||||||
|
pcmd->forwardmove = q1cmd.forwardmove = LittleShort(q1cmd.forwardmove);
|
||||||
|
pcmd->sidemove = q1cmd.sidemove = LittleShort(q1cmd.sidemove);
|
||||||
|
pcmd->upmove = q1cmd.upmove = LittleShort(q1cmd.upmove);
|
||||||
|
pcmd->msec = q1cmd.msec;
|
||||||
|
pcmd->buttons = q1cmd.buttons;
|
||||||
|
|
||||||
|
|
||||||
cl.frames[i].senttime = demotime;
|
cl.frames[i].senttime = demotime;
|
||||||
cl.frames[i].receivedtime = -1; // we haven't gotten a reply yet
|
cl.frames[i].receivedtime = -1; // we haven't gotten a reply yet
|
||||||
cls.netchan.outgoing_sequence++;
|
cls.netchan.outgoing_sequence++;
|
||||||
|
|
|
@ -78,6 +78,8 @@ cvar_t d_smooth = {"d_smooth", "0"};
|
||||||
#endif
|
#endif
|
||||||
cvar_t gl_skyboxdist = {"gl_skyboxdist", "2300"};
|
cvar_t gl_skyboxdist = {"gl_skyboxdist", "2300"};
|
||||||
|
|
||||||
|
cvar_t r_vertexdlights = {"r_vertexdlights", "1"};
|
||||||
|
|
||||||
extern cvar_t r_dodgytgafiles;
|
extern cvar_t r_dodgytgafiles;
|
||||||
|
|
||||||
cvar_t r_nolerp = {"r_nolerp", "0"};
|
cvar_t r_nolerp = {"r_nolerp", "0"};
|
||||||
|
@ -154,6 +156,8 @@ cvar_t gl_ati_truform = {"gl_ati_truform", "0"};
|
||||||
cvar_t gl_ati_truform_type = {"gl_ati_truform_type", "1"};
|
cvar_t gl_ati_truform_type = {"gl_ati_truform_type", "1"};
|
||||||
cvar_t gl_ati_truform_tesselation = {"gl_ati_truform_tesselation", "3"};
|
cvar_t gl_ati_truform_tesselation = {"gl_ati_truform_tesselation", "3"};
|
||||||
|
|
||||||
|
cvar_t gl_lateswap = {"gl_lateswap", "1"};
|
||||||
|
|
||||||
cvar_t scr_sshot_type = {"scr_sshot_type", "jpg"};
|
cvar_t scr_sshot_type = {"scr_sshot_type", "jpg"};
|
||||||
|
|
||||||
|
|
||||||
|
@ -259,6 +263,7 @@ void GLRenderer_Init(void)
|
||||||
Cvar_Register (&gl_playermip, GLRENDEREROPTIONS);
|
Cvar_Register (&gl_playermip, GLRENDEREROPTIONS);
|
||||||
Cvar_Register (&gl_nocolors, GLRENDEREROPTIONS);
|
Cvar_Register (&gl_nocolors, GLRENDEREROPTIONS);
|
||||||
Cvar_Register (&gl_finish, GLRENDEREROPTIONS);
|
Cvar_Register (&gl_finish, GLRENDEREROPTIONS);
|
||||||
|
Cvar_Register (&gl_lateswap, GLRENDEREROPTIONS);
|
||||||
|
|
||||||
Cvar_Register (&r_shadows, GLRENDEREROPTIONS);
|
Cvar_Register (&r_shadows, GLRENDEREROPTIONS);
|
||||||
Cvar_Register (&r_noaliasshadows, GLRENDEREROPTIONS);
|
Cvar_Register (&r_noaliasshadows, GLRENDEREROPTIONS);
|
||||||
|
|
|
@ -706,6 +706,15 @@ typedef struct usercmd_s
|
||||||
qbyte impulse;
|
qbyte impulse;
|
||||||
qbyte lightlevel;
|
qbyte lightlevel;
|
||||||
} usercmd_t;
|
} usercmd_t;
|
||||||
|
|
||||||
|
typedef struct q1usercmd_s
|
||||||
|
{
|
||||||
|
qbyte msec;
|
||||||
|
vec3_t angles;
|
||||||
|
short forwardmove, sidemove, upmove;
|
||||||
|
qbyte buttons;
|
||||||
|
qbyte impulse;
|
||||||
|
} q1usercmd_t;
|
||||||
#define SHORT2ANGLE(x) (x) * (360.0/65536)
|
#define SHORT2ANGLE(x) (x) * (360.0/65536)
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -59,6 +59,7 @@ int numTempNormals;
|
||||||
vec3_t *tempNormals;
|
vec3_t *tempNormals;
|
||||||
|
|
||||||
extern cvar_t gl_ati_truform;
|
extern cvar_t gl_ati_truform;
|
||||||
|
extern cvar_t r_vertexdlights;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int ofs_indexes;
|
int ofs_indexes;
|
||||||
|
@ -840,8 +841,6 @@ void R_DrawGAliasModel (entity_t *e)
|
||||||
float entScale;
|
float entScale;
|
||||||
vec3_t lightdir;
|
vec3_t lightdir;
|
||||||
|
|
||||||
int pervertexdlights = 1;
|
|
||||||
|
|
||||||
float tmatrix[3][4];
|
float tmatrix[3][4];
|
||||||
|
|
||||||
currententity = e;
|
currententity = e;
|
||||||
|
@ -868,7 +867,7 @@ void R_DrawGAliasModel (entity_t *e)
|
||||||
lightdir[2] = 1;
|
lightdir[2] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pervertexdlights)
|
if (!r_vertexdlights.value)
|
||||||
{
|
{
|
||||||
for (i=0 ; i<MAX_DLIGHTS ; i++)
|
for (i=0 ; i<MAX_DLIGHTS ; i++)
|
||||||
{
|
{
|
||||||
|
@ -1139,7 +1138,7 @@ void R_DrawGAliasModel (entity_t *e)
|
||||||
while(inf)
|
while(inf)
|
||||||
{
|
{
|
||||||
R_GAliasBuildMesh(&mesh, inf, e->frame, e->oldframe, e->lerptime, e->alpha);
|
R_GAliasBuildMesh(&mesh, inf, e->frame, e->oldframe, e->lerptime, e->alpha);
|
||||||
if (pervertexdlights)
|
if (r_vertexdlights.value)
|
||||||
R_GAliasAddDlights(&mesh, e->origin, e->angles);
|
R_GAliasAddDlights(&mesh, e->origin, e->angles);
|
||||||
skin = GL_ChooseSkin(inf, clmodel->name, e);
|
skin = GL_ChooseSkin(inf, clmodel->name, e);
|
||||||
c_alias_polys += mesh.numindexes/3;
|
c_alias_polys += mesh.numindexes/3;
|
||||||
|
|
|
@ -81,7 +81,19 @@ void GL_FlushBinds(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef vec3_t mat3_t[3];
|
||||||
|
void Matrix3_Multiply (mat3_t in1, mat3_t in2, mat3_t out)
|
||||||
|
{
|
||||||
|
out[0][0] = in1[0][0]*in2[0][0] + in1[0][1]*in2[1][0] + in1[0][2]*in2[2][0];
|
||||||
|
out[0][1] = in1[0][0]*in2[0][1] + in1[0][1]*in2[1][1] + in1[0][2]*in2[2][1];
|
||||||
|
out[0][2] = in1[0][0]*in2[0][2] + in1[0][1]*in2[1][2] + in1[0][2]*in2[2][2];
|
||||||
|
out[1][0] = in1[1][0]*in2[0][0] + in1[1][1]*in2[1][0] + in1[1][2]*in2[2][0];
|
||||||
|
out[1][1] = in1[1][0]*in2[0][1] + in1[1][1]*in2[1][1] + in1[1][2]*in2[2][1];
|
||||||
|
out[1][2] = in1[1][0]*in2[0][2] + in1[1][1]*in2[1][2] + in1[1][2]*in2[2][2];
|
||||||
|
out[2][0] = in1[2][0]*in2[0][0] + in1[2][1]*in2[1][0] + in1[2][2]*in2[2][0];
|
||||||
|
out[2][1] = in1[2][0]*in2[0][1] + in1[2][1]*in2[1][1] + in1[2][2]*in2[2][1];
|
||||||
|
out[2][2] = in1[2][0]*in2[0][2] + in1[2][1]*in2[1][2] + in1[2][2]*in2[2][2];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -802,7 +814,6 @@ void VectorNormalizeFast( vec3_t v )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef vec3_t mat3_t[3];
|
|
||||||
mat3_t axisDefault={{1, 0, 0},
|
mat3_t axisDefault={{1, 0, 0},
|
||||||
{0, 1, 0},
|
{0, 1, 0},
|
||||||
{0, 0, 1}};
|
{0, 0, 1}};
|
||||||
|
@ -827,19 +838,6 @@ void Matrix3_Multiply_Vec3 (mat3_t a, vec3_t b, vec3_t product)
|
||||||
product[2] = a[2][0]*b[0] + a[2][1]*b[1] + a[2][2]*b[2];
|
product[2] = a[2][0]*b[0] + a[2][1]*b[1] + a[2][2]*b[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Matrix3_Multiply (mat3_t in1, mat3_t in2, mat3_t out)
|
|
||||||
{
|
|
||||||
out[0][0] = in1[0][0]*in2[0][0] + in1[0][1]*in2[1][0] + in1[0][2]*in2[2][0];
|
|
||||||
out[0][1] = in1[0][0]*in2[0][1] + in1[0][1]*in2[1][1] + in1[0][2]*in2[2][1];
|
|
||||||
out[0][2] = in1[0][0]*in2[0][2] + in1[0][1]*in2[1][2] + in1[0][2]*in2[2][2];
|
|
||||||
out[1][0] = in1[1][0]*in2[0][0] + in1[1][1]*in2[1][0] + in1[1][2]*in2[2][0];
|
|
||||||
out[1][1] = in1[1][0]*in2[0][1] + in1[1][1]*in2[1][1] + in1[1][2]*in2[2][1];
|
|
||||||
out[1][2] = in1[1][0]*in2[0][2] + in1[1][1]*in2[1][2] + in1[1][2]*in2[2][2];
|
|
||||||
out[2][0] = in1[2][0]*in2[0][0] + in1[2][1]*in2[1][0] + in1[2][2]*in2[2][0];
|
|
||||||
out[2][1] = in1[2][0]*in2[0][1] + in1[2][1]*in2[1][1] + in1[2][2]*in2[2][1];
|
|
||||||
out[2][2] = in1[2][0]*in2[0][2] + in1[2][1]*in2[1][2] + in1[2][2]*in2[2][2];
|
|
||||||
}
|
|
||||||
|
|
||||||
int Matrix3_Compare(mat3_t in, mat3_t out)
|
int Matrix3_Compare(mat3_t in, mat3_t out)
|
||||||
{
|
{
|
||||||
return memcmp(in, out, sizeof(mat3_t));
|
return memcmp(in, out, sizeof(mat3_t));
|
||||||
|
|
|
@ -807,6 +807,7 @@ TRACE(("dbg: GLDraw_ReInit: Allocating upload buffers\n"));
|
||||||
|
|
||||||
TRACE(("dbg: GLDraw_ReInit: GL_EndRendering\n"));
|
TRACE(("dbg: GLDraw_ReInit: GL_EndRendering\n"));
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
|
GL_DoSwap();
|
||||||
|
|
||||||
|
|
||||||
#ifdef Q3SHADERS
|
#ifdef Q3SHADERS
|
||||||
|
|
|
@ -1402,6 +1402,8 @@ void PPL_BaseTextures(model_t *model)
|
||||||
msurface_t *s;
|
msurface_t *s;
|
||||||
texture_t *t;
|
texture_t *t;
|
||||||
|
|
||||||
|
GL_DoSwap();
|
||||||
|
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
glColor4f(1,1,1, 1);
|
glColor4f(1,1,1, 1);
|
||||||
// glDepthFunc(GL_LESS);
|
// glDepthFunc(GL_LESS);
|
||||||
|
|
|
@ -208,6 +208,7 @@ void R_Envmap_f (void)
|
||||||
glDrawBuffer (GL_BACK);
|
glDrawBuffer (GL_BACK);
|
||||||
glReadBuffer (GL_BACK);
|
glReadBuffer (GL_BACK);
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
|
GL_DoSwap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -934,6 +935,7 @@ void GLR_TimeRefresh_f (void)
|
||||||
|
|
||||||
glDrawBuffer (GL_BACK);
|
glDrawBuffer (GL_BACK);
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
|
GL_DoSwap();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SWQUAKE
|
#ifndef SWQUAKE
|
||||||
|
|
|
@ -117,6 +117,7 @@ void GLSCR_UpdateScreen (void)
|
||||||
GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
|
GL_BeginRendering (&glx, &gly, &glwidth, &glheight);
|
||||||
SCR_DrawLoading ();
|
SCR_DrawLoading ();
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
|
GL_DoSwap();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,6 +145,7 @@ void GLSCR_UpdateScreen (void)
|
||||||
#endif
|
#endif
|
||||||
GLR_BrightenScreen();
|
GLR_BrightenScreen();
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
|
GL_DoSwap();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -156,6 +158,7 @@ void GLSCR_UpdateScreen (void)
|
||||||
#endif
|
#endif
|
||||||
GLR_BrightenScreen();
|
GLR_BrightenScreen();
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
|
GL_DoSwap();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,6 +183,8 @@ void GLSCR_UpdateScreen (void)
|
||||||
SCR_SetUpToDrawConsole ();
|
SCR_SetUpToDrawConsole ();
|
||||||
if (cl.worldmodel && uimenu != 1)
|
if (cl.worldmodel && uimenu != 1)
|
||||||
V_RenderView ();
|
V_RenderView ();
|
||||||
|
else
|
||||||
|
GL_DoSwap();
|
||||||
|
|
||||||
GL_Set2D ();
|
GL_Set2D ();
|
||||||
|
|
||||||
|
@ -252,7 +257,7 @@ void GLSCR_UpdateScreen (void)
|
||||||
#if defined(_WIN32) && defined(RGLQUAKE)
|
#if defined(_WIN32) && defined(RGLQUAKE)
|
||||||
Media_RecordFrame();
|
Media_RecordFrame();
|
||||||
#endif
|
#endif
|
||||||
GL_EndRendering ();
|
GL_EndRendering ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -158,6 +158,7 @@ extern cvar_t _vid_wait_override;
|
||||||
extern cvar_t vid_stretch_by_2;
|
extern cvar_t vid_stretch_by_2;
|
||||||
extern cvar_t _windowed_mouse;
|
extern cvar_t _windowed_mouse;
|
||||||
extern cvar_t vid_hardwaregamma;
|
extern cvar_t vid_hardwaregamma;
|
||||||
|
extern cvar_t gl_lateswap;
|
||||||
|
|
||||||
int window_center_x, window_center_y, window_x, window_y, window_width, window_height;
|
int window_center_x, window_center_y, window_x, window_y, window_width, window_height;
|
||||||
RECT window_rect;
|
RECT window_rect;
|
||||||
|
@ -802,8 +803,13 @@ void GL_BeginRendering (int *x, int *y, int *width, int *height)
|
||||||
// glViewport (*x, *y, *width, *height);
|
// glViewport (*x, *y, *width, *height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GL_EndRendering (void)
|
qboolean screenflush;
|
||||||
|
void GL_DoSwap (void)
|
||||||
{
|
{
|
||||||
|
if (!screenflush)
|
||||||
|
return;
|
||||||
|
screenflush = 0;
|
||||||
|
|
||||||
if (!scr_skipupdate || block_drawing)
|
if (!scr_skipupdate || block_drawing)
|
||||||
qSwapBuffers(maindc);
|
qSwapBuffers(maindc);
|
||||||
|
|
||||||
|
@ -835,6 +841,13 @@ void GL_EndRendering (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GL_EndRendering (void)
|
||||||
|
{
|
||||||
|
screenflush = true;
|
||||||
|
if (!gl_lateswap.value)
|
||||||
|
GL_DoSwap();
|
||||||
|
}
|
||||||
|
|
||||||
void GLVID_SetPalette (unsigned char *palette)
|
void GLVID_SetPalette (unsigned char *palette)
|
||||||
{
|
{
|
||||||
qbyte *pal;
|
qbyte *pal;
|
||||||
|
|
|
@ -25,6 +25,8 @@ int PlaneTypeForNormal ( vec3_t normal );
|
||||||
//Matthew S Fell (msfell@aol.com)
|
//Matthew S Fell (msfell@aol.com)
|
||||||
//Unofficial Doom Specs
|
//Unofficial Doom Specs
|
||||||
|
|
||||||
|
//(aol suck)
|
||||||
|
|
||||||
void Doom_SetHullFuncs(hull_t *hull);
|
void Doom_SetHullFuncs(hull_t *hull);
|
||||||
void Doom_SetModelFunc(model_t *mod);
|
void Doom_SetModelFunc(model_t *mod);
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,12 @@ int numCompilerConstants;
|
||||||
|
|
||||||
char *pr_punctuation[] =
|
char *pr_punctuation[] =
|
||||||
// longer symbols must be before a shorter partial match
|
// longer symbols must be before a shorter partial match
|
||||||
{"&&", "||", "<=", ">=","==", "!=", "/=", "*=", "+=", "-=", "(+)", "(-)", "++", "--", "::", ";", ",", "!", "*", "/", "(", ")", "-", "+", "=", "[", "]", "{", "}", "...", "..", ".", "<<", "<", ">>", ">" , "#" , "@", "&" , "|", "^", ":", NULL};
|
{"&&", "||", "<=", ">=","==", "!=", "/=", "*=", "+=", "-=", "|=", "(+)", "(-)", "++", "--", "->", "::", ";", ",", "!", "*", "/", "(", ")", "-", "+", "=", "[", "]", "{", "}", "...", "..", ".", "<<", "<", ">>", ">" , "#" , "@", "&" , "|", "^", ":", NULL};
|
||||||
|
|
||||||
|
char *pr_punctuationremap[] = //a nice bit of evilness.
|
||||||
|
//|= -> (+)
|
||||||
|
//-> -> .
|
||||||
|
{"&&", "||", "<=", ">=","==", "!=", "/=", "*=", "+=", "-=", "(+)","(+)", "(-)", "++", "--", ".", "::", ";", ",", "!", "*", "/", "(", ")", "-", "+", "=", "[", "]", "{", "}", "...", "..", ".", "<<", "<", ">>", ">" , "#" , "@", "&" , "|", "^", ":", NULL};
|
||||||
|
|
||||||
// simple types. function types are dynamically allocated
|
// simple types. function types are dynamically allocated
|
||||||
QCC_type_t *type_void;// = {ev_void/*, &def_void*/};
|
QCC_type_t *type_void;// = {ev_void/*, &def_void*/};
|
||||||
|
@ -1299,7 +1304,7 @@ void QCC_PR_LexPunctuation (void)
|
||||||
len = strlen(p);
|
len = strlen(p);
|
||||||
if (!strncmp(p, pr_file_p, len) )
|
if (!strncmp(p, pr_file_p, len) )
|
||||||
{
|
{
|
||||||
strcpy (pr_token, p);
|
strcpy (pr_token, pr_punctuationremap[i]);
|
||||||
if (p[0] == '{')
|
if (p[0] == '{')
|
||||||
pr_bracelevel++;
|
pr_bracelevel++;
|
||||||
else if (p[0] == '}')
|
else if (p[0] == '}')
|
||||||
|
@ -2117,7 +2122,7 @@ void QCC_PR_Lex (void)
|
||||||
|
|
||||||
// if the first character is a valid identifier, parse until a non-id
|
// if the first character is a valid identifier, parse until a non-id
|
||||||
// character is reached
|
// character is reached
|
||||||
if ( c == '~' )
|
if ( c == '~' || c == '%') //let's see which one we make into an operator first... possibly both...
|
||||||
{
|
{
|
||||||
pr_file_p++;
|
pr_file_p++;
|
||||||
pr_token_type = tt_immediate;
|
pr_token_type = tt_immediate;
|
||||||
|
|
Loading…
Reference in a new issue