=====================
*/
-void CL_VM_ShutDown (void);
void CL_ClearState(void)
{
int i;
{
int i;
qboolean fail = false;
+ char vabuf[1024];
if (!allowstarkey && key[0] == '*')
fail = true;
if (!allowmodel && (!strcasecmp(key, "pmodel") || !strcasecmp(key, "emodel")))
if (cls.protocol == PROTOCOL_QUAKEWORLD)
{
MSG_WriteByte(&cls.netcon->message, qw_clc_stringcmd);
- MSG_WriteString(&cls.netcon->message, va("setinfo \"%s\" \"%s\"", key, value));
+ MSG_WriteString(&cls.netcon->message, va(vabuf, sizeof(vabuf), "setinfo \"%s\" \"%s\"", key, value));
}
else if (!strcasecmp(key, "name"))
{
MSG_WriteByte(&cls.netcon->message, clc_stringcmd);
- MSG_WriteString(&cls.netcon->message, va("name \"%s\"", value));
+ MSG_WriteString(&cls.netcon->message, va(vabuf, sizeof(vabuf), "name \"%s\"", value));
}
else if (!strcasecmp(key, "playermodel"))
{
MSG_WriteByte(&cls.netcon->message, clc_stringcmd);
- MSG_WriteString(&cls.netcon->message, va("playermodel \"%s\"", value));
+ MSG_WriteString(&cls.netcon->message, va(vabuf, sizeof(vabuf), "playermodel \"%s\"", value));
}
else if (!strcasecmp(key, "playerskin"))
{
MSG_WriteByte(&cls.netcon->message, clc_stringcmd);
- MSG_WriteString(&cls.netcon->message, va("playerskin \"%s\"", value));
+ MSG_WriteString(&cls.netcon->message, va(vabuf, sizeof(vabuf), "playerskin \"%s\"", value));
}
else if (!strcasecmp(key, "topcolor"))
{
else if (!strcasecmp(key, "rate"))
{
MSG_WriteByte(&cls.netcon->message, clc_stringcmd);
- MSG_WriteString(&cls.netcon->message, va("rate \"%s\"", value));
+ MSG_WriteString(&cls.netcon->message, va(vabuf, sizeof(vabuf), "rate \"%s\"", value));
}
}
}
cls.netcon = NULL;
}
cls.state = ca_disconnected;
+ cl.islocalgame = false;
cls.demoplayback = cls.timedemo = false;
cls.signon = 0;
// make sure the client ports are open before attempting to connect
NetConn_UpdateSockets();
- // run a network frame
- //NetConn_ClientFrame();SV_VM_Begin();NetConn_ServerFrame();SV_VM_End();
-
if (LHNETADDRESS_FromString(&cls.connect_address, host, 26000) && (cls.connect_mysocket = NetConn_ChooseClientSocketForAddress(&cls.connect_address)))
{
cls.connect_trying = true;
}
M_Update_Return_Reason("Trying to connect...");
-
- // run several network frames to jump into the game quickly
- //if (sv.active)
- //{
- // NetConn_ClientFrame();SV_VM_Begin();NetConn_ServerFrame();SV_VM_End();
- // NetConn_ClientFrame();SV_VM_Begin();NetConn_ServerFrame();SV_VM_End();
- // NetConn_ClientFrame();SV_VM_Begin();NetConn_ServerFrame();SV_VM_End();
- // NetConn_ClientFrame();SV_VM_Begin();NetConn_ServerFrame();SV_VM_End();
- //}
}
else
{
for (i = -MAX_MODELS;i < MAX_MODELS;i++)
{
model = CL_GetModelByIndex(i);
+ if (!model)
+ continue;
if(model->loaded || i == 1)
Con_Printf("%3i: %-30s %-8s %-10i\n", i, model->name, model->modeldatatypestring, model->surfmesh.num_triangles);
else
dl->specularscale = specularscale;
}
-void CL_DecayLightFlashes(void)
+static void CL_DecayLightFlashes(void)
{
int i, oldmax;
dlight_t *dl;
}
}
-void CL_AddQWCTFFlagModel(entity_t *player, int skin)
+static void CL_AddQWCTFFlagModel(entity_t *player, int skin)
{
int frame = player->render.framegroupblend[0].frame;
float f;
static const vec3_t muzzleflashorigin = {18, 0, 0};
-extern void V_DriftPitch(void);
-extern void V_FadeViewFlashs(void);
-extern void V_CalcViewBlend(void);
-extern void V_CalcRefdef(void);
-
void CL_SetEntityColormapColors(entity_render_t *ent, int colormap)
{
const unsigned char *cbcolor;
}
// note this is a recursive function, recursionlimit should be 32 or so on the initial call
-void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolate)
+static void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolate)
{
const matrix4x4_t *matrix;
matrix4x4_t blendmatrix, tempmatrix, matrix2;
}
// creates light and trails from an entity
-void CL_UpdateNetworkEntityTrail(entity_t *e)
+static void CL_UpdateNetworkEntityTrail(entity_t *e)
{
effectnameindex_t trailtype;
vec3_t origin;
if (len > 0)
len = 1.0f / len;
VectorScale(vel, len, vel);
- CL_ParticleTrail(trailtype, 1, e->persistent.trail_origin, origin, vel, vel, e, e->state_current.glowcolor, false, true, NULL, NULL);
+ // pass time as count so that trails that are time based (such as an emitter) will emit properly as long as they don't use trailspacing
+ CL_ParticleTrail(trailtype, bound(0, cl.time - cl.oldtime, 0.1), e->persistent.trail_origin, origin, vel, vel, e, e->state_current.glowcolor, false, true, NULL, NULL);
}
// now that the entity has survived one trail update it is allowed to
// leave a real trail on later frames
CL_UpdateNetworkCollisionEntities
===============
*/
-void CL_UpdateNetworkCollisionEntities(void)
+static void CL_UpdateNetworkCollisionEntities(void)
{
entity_t *ent;
int i;
}
}
-extern void R_DecalSystem_Reset(decalsystem_t *decalsystem);
-
/*
===============
CL_UpdateNetworkEntities
===============
*/
-void CL_UpdateNetworkEntities(void)
+static void CL_UpdateNetworkEntities(void)
{
entity_t *ent;
int i;
}
}
-void CL_UpdateViewModel(void)
+static void CL_UpdateViewModel(void)
{
entity_t *ent;
ent = &cl.viewent;
}
// note this is a recursive function, but it can never get in a runaway loop (because of the delayedlink flags)
-void CL_LinkNetworkEntity(entity_t *e)
+static void CL_LinkNetworkEntity(entity_t *e)
{
effectnameindex_t trailtype;
vec3_t origin;
vec3_t dlightcolor;
vec_t dlightradius;
+ char vabuf[1024];
// skip inactive entities and world
if (!e->state_current.active || e == cl.entities)
// FIXME: add ambient/diffuse/specular scales as an extension ontop of TENEBRAE_GFX_DLIGHTS?
Matrix4x4_Normalize(&dlightmatrix, &e->render.matrix);
Matrix4x4_Scale(&dlightmatrix, light[3], 1);
- R_RTLight_Update(&r_refdef.scene.templights[r_refdef.scene.numlights], false, &dlightmatrix, light, e->state_current.lightstyle, e->state_current.skin > 0 ? va("cubemaps/%i", e->state_current.skin) : NULL, !(e->state_current.lightpflags & PFLAGS_NOSHADOW), (e->state_current.lightpflags & PFLAGS_CORONA) != 0, 0.25, 0, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
+ R_RTLight_Update(&r_refdef.scene.templights[r_refdef.scene.numlights], false, &dlightmatrix, light, e->state_current.lightstyle, e->state_current.skin > 0 ? va(vabuf, sizeof(vabuf), "cubemaps/%i", e->state_current.skin) : NULL, !(e->state_current.lightpflags & PFLAGS_NOSHADOW), (e->state_current.lightpflags & PFLAGS_CORONA) != 0, 0.25, 0, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
r_refdef.scene.lights[r_refdef.scene.numlights] = &r_refdef.scene.templights[r_refdef.scene.numlights];r_refdef.scene.numlights++;
}
// make the glow dlight
// Matrix4x4_Print(&e->render.matrix);
}
-void CL_RelinkWorld(void)
+static void CL_RelinkWorld(void)
{
entity_t *ent = &cl.entities[0];
// FIXME: this should be done at load
}
}
-void CL_LerpPlayer(float frac)
+static void CL_LerpPlayer(float frac)
{
int i;
static void CL_TimeRefresh_f (void)
{
int i;
- float timestart, timedelta;
+ double timestart, timedelta;
r_refdef.scene.extraupdate = false;
- timestart = Sys_DoubleTime();
+ timestart = Sys_DirtyTime();
for (i = 0;i < 128;i++)
{
Matrix4x4_CreateFromQuakeEntity(&r_refdef.view.matrix, r_refdef.view.origin[0], r_refdef.view.origin[1], r_refdef.view.origin[2], 0, i / 128.0 * 360.0, 0, 1);
r_refdef.view.quality = 1;
CL_UpdateScreen();
}
- timedelta = Sys_DoubleTime() - timestart;
+ timedelta = Sys_DirtyTime() - timestart;
Con_Printf("%f seconds (%f fps)\n", timedelta, 128/timedelta);
}
-void CL_AreaStats_f(void)
+static void CL_AreaStats_f(void)
{
World_PrintAreaStats(&cl.world, "client");
}
dpsnprintf(buffer, buffersize, "LOC=%.0f:%.0f:%.0f", point[0], point[1], point[2]);
}
-void CL_Locs_FreeNode(cl_locnode_t *node)
+static void CL_Locs_FreeNode(cl_locnode_t *node)
{
cl_locnode_t **pointer, **next;
for (pointer = &cl.locnodes;*pointer;pointer = next)
Con_Printf("CL_Locs_FreeNode: no such node! (%p)\n", (void *)node);
}
-void CL_Locs_AddNode(vec3_t mins, vec3_t maxs, const char *name)
+static void CL_Locs_AddNode(vec3_t mins, vec3_t maxs, const char *name)
{
cl_locnode_t *node, **pointer;
int namelen;
*pointer = node;
}
-void CL_Locs_Add_f(void)
+static void CL_Locs_Add_f(void)
{
vec3_t mins, maxs;
if (Cmd_Argc() != 5 && Cmd_Argc() != 8)
CL_Locs_AddNode(mins, mins, Cmd_Argv(4));
}
-void CL_Locs_RemoveNearest_f(void)
+static void CL_Locs_RemoveNearest_f(void)
{
cl_locnode_t *loc;
loc = CL_Locs_FindNearest(r_refdef.view.origin);
Con_Printf("no loc point or box found for your location\n");
}
-void CL_Locs_Clear_f(void)
+static void CL_Locs_Clear_f(void)
{
while (cl.locnodes)
CL_Locs_FreeNode(cl.locnodes);
}
-void CL_Locs_Save_f(void)
+static void CL_Locs_Save_f(void)
{
cl_locnode_t *loc;
qfile_t *outfile;
CL_Video_Init();
}
-
-
-