Q2 choke info works, so netgraphs are now sane. Q2 has its own gunkick cvar, so the default doesn't make q2 seem broken. Changed Q1 dlight flickering behaviour - pick a new value no more than 20 times a second (500 updates without vsync was horrible).
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3774 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
cea945ad5e
commit
b59935e30f
5 changed files with 34 additions and 8 deletions
|
@ -1727,6 +1727,8 @@ void CL_LinkPacketEntities (void)
|
|||
dlight_t *dl;
|
||||
vec3_t angles;
|
||||
qboolean nolerp;
|
||||
static int flickertime;
|
||||
static int flicker;
|
||||
|
||||
float servertime;
|
||||
|
||||
|
@ -1751,6 +1753,10 @@ void CL_LinkPacketEntities (void)
|
|||
servertime = realtime;
|
||||
*/
|
||||
|
||||
i = servertime*20;
|
||||
if (flickertime != i)
|
||||
flicker = rand();
|
||||
|
||||
autorotate = anglemod(100*servertime);
|
||||
|
||||
#ifdef CSQC_DAT
|
||||
|
@ -1825,7 +1831,7 @@ void CL_LinkPacketEntities (void)
|
|||
|
||||
if (radius)
|
||||
{
|
||||
radius += r_lightflicker.value?(rand()&31):0;
|
||||
radius += r_lightflicker.value?((flicker + state->number)&31):0;
|
||||
CL_NewDlightRGB(state->number, state->origin, radius, 0.1, colour[0], colour[1], colour[2]);
|
||||
}
|
||||
}
|
||||
|
@ -2664,6 +2670,8 @@ void CL_LinkPlayers (void)
|
|||
vec3_t angles;
|
||||
qboolean predictplayers;
|
||||
model_t *model;
|
||||
static int flickertime;
|
||||
static int flicker;
|
||||
|
||||
if (!cl.worldmodel || cl.worldmodel->needload)
|
||||
return;
|
||||
|
@ -2751,13 +2759,23 @@ void CL_LinkPlayers (void)
|
|||
vec3_t org;
|
||||
VectorCopy(state->origin, org);
|
||||
for (pnum = 0; pnum < cl.splitclients; pnum++)
|
||||
VectorCopy(cl.simorg[pnum], org);
|
||||
if (cl.playernum[pnum] == j)
|
||||
VectorCopy(cl.simorg[pnum], org);
|
||||
if (model)
|
||||
{
|
||||
org[2] += model->mins[2];
|
||||
org[2] += 32;
|
||||
}
|
||||
radius += r_lightflicker.value?(rand()&31):0;
|
||||
if (r_lightflicker.value)
|
||||
{
|
||||
pnum = realtime*20;
|
||||
if (flickertime != pnum)
|
||||
{
|
||||
flickertime = pnum;
|
||||
flicker = rand();
|
||||
}
|
||||
radius += (flicker+j)&31;
|
||||
}
|
||||
CL_NewDlightRGB(j+1, org, radius, 0.1, colour[0], colour[1], colour[2])->flags &= ~LFLAG_ALLOW_FLASH;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -624,7 +624,6 @@ typedef struct
|
|||
char q2statusbar[1024];
|
||||
char q2layout[1024];
|
||||
int parse_entities;
|
||||
int surpressCount;
|
||||
float lerpfrac;
|
||||
vec3_t predicted_origin;
|
||||
vec3_t predicted_angles;
|
||||
|
|
|
@ -1153,6 +1153,7 @@ void CLQ2_ParseFrame (void)
|
|||
int cmd;
|
||||
int len;
|
||||
q2frame_t *old;
|
||||
int i,j;
|
||||
|
||||
memset (&cl.q2frame, 0, sizeof(cl.q2frame));
|
||||
|
||||
|
@ -1164,7 +1165,10 @@ void CLQ2_ParseFrame (void)
|
|||
cl.q2frame.deltaframe = MSG_ReadLong ();
|
||||
cl.q2frame.servertime = cl.q2frame.serverframe*100;
|
||||
|
||||
cl.surpressCount = MSG_ReadByte ();
|
||||
i = MSG_ReadByte ();
|
||||
|
||||
for (j=0 ; j<i ; j++)
|
||||
cl.frames[ (cls.netchan.incoming_acknowledged-1-j)&UPDATE_MASK ].receivedtime = -2;
|
||||
|
||||
if (cl_shownet.value == 3)
|
||||
Con_Printf (" frame:%i delta:%i\n", cl.q2frame.serverframe,
|
||||
|
@ -1951,7 +1955,7 @@ Sets r_refdef view values
|
|||
*/
|
||||
void CLQ2_CalcViewValues (void)
|
||||
{
|
||||
extern cvar_t v_gunkick;
|
||||
extern cvar_t v_gunkick_q2;
|
||||
int i;
|
||||
float lerp, backlerp;
|
||||
q2centity_t *ent;
|
||||
|
@ -2019,7 +2023,7 @@ void CLQ2_CalcViewValues (void)
|
|||
}
|
||||
|
||||
for (i=0 ; i<3 ; i++)
|
||||
r_refdef.viewangles[i] += v_gunkick.value * LerpAngle (ops->kick_angles[i], ps->kick_angles[i], lerp);
|
||||
r_refdef.viewangles[i] += v_gunkick_q2.value * LerpAngle (ops->kick_angles[i], ps->kick_angles[i], lerp);
|
||||
|
||||
VectorCopy(r_refdef.vieworg, cl.simorg[0]);
|
||||
VectorCopy(r_refdef.viewangles, cl.simangles[0]);
|
||||
|
|
|
@ -115,6 +115,9 @@ typedef enum
|
|||
VF_AFOV = 203, //aproximate fov (match what the engine would normally use for the fov cvar). p0=fov, p1=zoom
|
||||
} viewflags;
|
||||
|
||||
/*FIXME: this should be changed*/
|
||||
#define CSQC_API_VERSION 1.0f
|
||||
|
||||
#define CSQCRF_VIEWMODEL 1 //Not drawn in mirrors
|
||||
#define CSQCRF_EXTERNALMODEL 2 //drawn ONLY in mirrors
|
||||
#define CSQCRF_DEPTHHACK 4 //fun depthhack
|
||||
|
@ -5311,7 +5314,7 @@ qboolean CSQC_Init (unsigned int checksum)
|
|||
if (csqcg.init_function)
|
||||
{
|
||||
void *pr_globals = PR_globals(csqcprogs, PR_CURRENT);
|
||||
G_FLOAT(OFS_PARM0) = 1.0; //api version
|
||||
G_FLOAT(OFS_PARM0) = CSQC_API_VERSION; //api version
|
||||
(((string_t *)pr_globals)[OFS_PARM1] = PR_TempString(csqcprogs, FULLENGINENAME));
|
||||
G_FLOAT(OFS_PARM2) = version_number();
|
||||
PR_ExecuteProgram(csqcprogs, csqcg.init_function);
|
||||
|
|
|
@ -91,6 +91,7 @@ cvar_t v_suitcshift = SCVAR("v_suitcshift", "1");
|
|||
cvar_t v_ringcshift = SCVAR("v_ringcshift", "1");
|
||||
cvar_t v_pentcshift = SCVAR("v_pentcshift", "1");
|
||||
cvar_t v_gunkick = SCVAR("v_gunkick", "0");
|
||||
cvar_t v_gunkick_q2 = SCVAR("v_gunkick_q2", "1");
|
||||
|
||||
cvar_t v_viewheight = SCVAR("v_viewheight", "0");
|
||||
|
||||
|
@ -1533,6 +1534,7 @@ void V_Init (void)
|
|||
Cvar_Register (&v_ringcshift, VIEWVARS);
|
||||
Cvar_Register (&v_pentcshift, VIEWVARS);
|
||||
Cvar_Register (&v_gunkick, VIEWVARS);
|
||||
Cvar_Register (&v_gunkick_q2, VIEWVARS);
|
||||
|
||||
Cvar_Register (&v_bonusflash, VIEWVARS);
|
||||
|
||||
|
|
Loading…
Reference in a new issue