diff --git a/nq/source/cl_main.c b/nq/source/cl_main.c index 09dc2a84b..a341b260d 100644 --- a/nq/source/cl_main.c +++ b/nq/source/cl_main.c @@ -90,7 +90,9 @@ client_state_t cl; // FIXME: put these on hunk? efrag_t cl_efrags[MAX_EFRAGS]; entity_t cl_entities[MAX_EDICTS]; +entity_state_t cl_baselines[MAX_EDICTS]; entity_t cl_static_entities[MAX_STATIC_ENTITIES]; +entity_state_t cl_static_entity_baselines[MAX_STATIC_ENTITIES]; lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES]; dlight_t cl_dlights[MAX_DLIGHTS]; @@ -174,6 +176,7 @@ CL_ClearState (void) // clear other arrays memset (cl_efrags, 0, sizeof (cl_efrags)); memset (cl_entities, 0, sizeof (cl_entities)); + memset (cl_baselines, 0, sizeof (cl_baselines)); memset (cl_dlights, 0, sizeof (cl_dlights)); memset (cl_lightstyle, 0, sizeof (cl_lightstyle)); @@ -183,11 +186,12 @@ CL_ClearState (void) cl.free_efrags[i].entnext = &cl.free_efrags[i + 1]; cl.free_efrags[i].entnext = NULL; for (i = 0; i < MAX_EDICTS; i++) { - cl_entities[i].baseline.alpha = 255; - cl_entities[i].baseline.scale = 16; - cl_entities[i].baseline.glow_color = 254; - cl_entities[i].baseline.glow_size = 0; - cl_entities[i].baseline.colormod = 255; + cl_entities[i].baseline = &cl_baselines[i]; + cl_entities[i].baseline->alpha = 255; + cl_entities[i].baseline->scale = 16; + cl_entities[i].baseline->glow_color = 254; + cl_entities[i].baseline->glow_size = 0; + cl_entities[i].baseline->colormod = 255; } } @@ -798,6 +802,8 @@ CL_SendCmd (void) void CL_Init (void) { + int i; + SZ_Alloc (&cls.message, 1024); CL_InitInput (); @@ -810,4 +816,8 @@ CL_Init (void) Cmd_AddCommand ("playdemo", CL_PlayDemo_f, "No Description"); Cmd_AddCommand ("timedemo", CL_TimeDemo_f, "No Description"); Cmd_AddCommand ("maplist", COM_Maplist_f, "No Description"); + + for (i = 0; i < MAX_STATIC_ENTITIES; i++) { + cl_static_entities[i].baseline = &cl_static_entity_baselines[i]; + } } diff --git a/nq/source/cl_parse.c b/nq/source/cl_parse.c index 041fe5437..f87e151e0 100644 --- a/nq/source/cl_parse.c +++ b/nq/source/cl_parse.c @@ -381,7 +381,7 @@ CL_ParseUpdate (int bits) if (modnum >= MAX_MODELS) Host_Error ("CL_ParseModel: bad modnum"); } else - modnum = ent->baseline.modelindex; + modnum = ent->baseline->modelindex; model = cl.model_precache[modnum]; if (model != ent->model) { @@ -403,12 +403,12 @@ CL_ParseUpdate (int bits) if (bits & U_FRAME) ent->frame = MSG_ReadByte (net_message); else - ent->frame = ent->baseline.frame; + ent->frame = ent->baseline->frame; if (bits & U_COLORMAP) i = MSG_ReadByte (net_message); else - i = ent->baseline.colormap; + i = ent->baseline->colormap; if (!i) ent->colormap = vid.colormap; else { @@ -420,7 +420,7 @@ CL_ParseUpdate (int bits) if (bits & U_SKIN) skin = MSG_ReadByte (net_message); else - skin = ent->baseline.skin; + skin = ent->baseline->skin; if (skin != ent->skinnum) { ent->skinnum = skin; if (num > 0 && num <= cl.maxclients) @@ -430,7 +430,7 @@ CL_ParseUpdate (int bits) if (bits & U_EFFECTS) ent->effects = MSG_ReadByte (net_message); else - ent->effects = ent->baseline.effects; + ent->effects = ent->baseline->effects; // shift the known values for interpolation VectorCopy (ent->msg_origins[0], ent->msg_origins[1]); @@ -439,29 +439,29 @@ CL_ParseUpdate (int bits) if (bits & U_ORIGIN1) ent->msg_origins[0][0] = MSG_ReadCoord (net_message); else - ent->msg_origins[0][0] = ent->baseline.origin[0]; + ent->msg_origins[0][0] = ent->baseline->origin[0]; if (bits & U_ANGLE1) ent->msg_angles[0][0] = MSG_ReadAngle (net_message); else - ent->msg_angles[0][0] = ent->baseline.angles[0]; + ent->msg_angles[0][0] = ent->baseline->angles[0]; if (bits & U_ORIGIN2) ent->msg_origins[0][1] = MSG_ReadCoord (net_message); else - ent->msg_origins[0][1] = ent->baseline.origin[1]; + ent->msg_origins[0][1] = ent->baseline->origin[1]; if (bits & U_ANGLE2) ent->msg_angles[0][1] = MSG_ReadAngle (net_message); else - ent->msg_angles[0][1] = ent->baseline.angles[1]; + ent->msg_angles[0][1] = ent->baseline->angles[1]; if (bits & U_ORIGIN3) ent->msg_origins[0][2] = MSG_ReadCoord (net_message); else - ent->msg_origins[0][2] = ent->baseline.origin[2]; + ent->msg_origins[0][2] = ent->baseline->origin[2]; if (bits & U_ANGLE3) ent->msg_angles[0][2] = MSG_ReadAngle (net_message); else - ent->msg_angles[0][2] = ent->baseline.angles[2]; + ent->msg_angles[0][2] = ent->baseline->angles[2]; if (bits & U_NOLERP) ent->forcelink = true; @@ -481,13 +481,13 @@ CL_ParseBaseline (entity_t *ent) { int i; - ent->baseline.modelindex = MSG_ReadByte (net_message); - ent->baseline.frame = MSG_ReadByte (net_message); - ent->baseline.colormap = MSG_ReadByte (net_message); - ent->baseline.skin = MSG_ReadByte (net_message); + ent->baseline->modelindex = MSG_ReadByte (net_message); + ent->baseline->frame = MSG_ReadByte (net_message); + ent->baseline->colormap = MSG_ReadByte (net_message); + ent->baseline->skin = MSG_ReadByte (net_message); for (i = 0; i < 3; i++) { - ent->baseline.origin[i] = MSG_ReadCoord (net_message); - ent->baseline.angles[i] = MSG_ReadAngle (net_message); + ent->baseline->origin[i] = MSG_ReadCoord (net_message); + ent->baseline->angles[i] = MSG_ReadAngle (net_message); } // LordHavoc: set up the baseline to account for new effects (alpha, // colormod, etc) @@ -618,14 +618,14 @@ CL_ParseStatic (void) CL_ParseBaseline (ent); // copy it to the current state - ent->model = cl.model_precache[ent->baseline.modelindex]; - ent->frame = ent->baseline.frame; + ent->model = cl.model_precache[ent->baseline->modelindex]; + ent->frame = ent->baseline->frame; ent->colormap = vid.colormap; - ent->skinnum = ent->baseline.skin; - ent->effects = ent->baseline.effects; + ent->skinnum = ent->baseline->skin; + ent->effects = ent->baseline->effects; - VectorCopy (ent->baseline.origin, ent->origin); - VectorCopy (ent->baseline.angles, ent->angles); + VectorCopy (ent->baseline->origin, ent->origin); + VectorCopy (ent->baseline->angles, ent->angles); R_AddEfrags (ent); } diff --git a/nq/source/gl_ngraph.c b/nq/source/gl_ngraph.c index 93e3c4f55..5fe32eb7c 100644 --- a/nq/source/gl_ngraph.c +++ b/nq/source/gl_ngraph.c @@ -61,7 +61,7 @@ int netgraphtexture; // netgraph texture //XXXstatic byte ngraph_texels[NET_GRAPHHEIGHT][NET_TIMINGS]; -static void +void R_LineGraph (int x, int h) { #if 0