X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=cl_parse.c;h=e924b18776551cdaa3b859640f6b1307fc35b405;hb=e86d9d2f088b3ec10cb0ffee10135017844e71f7;hp=a57cab57a8134fe5b53d9075a3898cc305b59232;hpb=96175f8db661871ffa3a16a20f68cf8552250dcf;p=xonotic%2Fdarkplaces.git diff --git a/cl_parse.c b/cl_parse.c index a57cab57..e924b187 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -426,7 +426,7 @@ static const vec3_t defaultmaxs = {4096, 4096, 4096}; static void CL_SetupWorldModel(void) { // update the world model - cl.entities[0].render.model = cl.worldmodel = cl.model_precache[1]; + cl.entities[0].render.model = cl.worldmodel = CL_GetModelByIndex(1); CL_UpdateRenderEntity(&cl.entities[0].render); // set up csqc world for collision culling @@ -1380,7 +1380,7 @@ void CL_StopDownload(int size, int crc) void CL_ParseDownload(void) { int i, start, size; - unsigned char data[65536]; + unsigned char data[NET_MAXMESSAGE]; start = MSG_ReadLong(); size = (unsigned short)MSG_ReadShort(); @@ -1846,7 +1846,7 @@ void CL_ValidateState(entity_state_t *s) if (!(s->flags & RENDER_COLORMAPPED) && s->colormap > cl.maxclients) Con_DPrintf("CL_ValidateState: colormap (%i) > cl.maxclients (%i)\n", s->colormap, cl.maxclients); - model = cl.model_precache[s->modelindex]; + model = CL_GetModelByIndex(s->modelindex); if (model && model->type && s->frame >= model->numframes) Con_DPrintf("CL_ValidateState: no such frame %i in \"%s\" (which has %i frames)\n", s->frame, model->name, model->numframes); if (model && model->type && s->skin > 0 && s->skin >= model->numskins && !(s->lightpflags & PFLAGS_FULLDYNAMIC)) @@ -1899,6 +1899,14 @@ void CL_MoveLerpEntityStates(entity_t *ent) // note that this case must do everything the following case does too } + else if ((ent->state_previous.effects & EF_RESTARTANIM_BIT) != (ent->state_current.effects & EF_RESTARTANIM_BIT)) + { + ent->render.framegroupblend[1] = ent->render.framegroupblend[0]; + ent->render.framegroupblend[1].lerp = 1; + ent->render.framegroupblend[0].frame = ent->state_current.frame; + ent->render.framegroupblend[0].start = cl.time; + ent->render.framegroupblend[0].lerp = 0; + } else if (DotProduct(odelta, odelta) > 1000*1000 || (cl.fixangle[0] && !cl.fixangle[1]) || (ent->state_previous.tagindex != ent->state_current.tagindex) @@ -2131,7 +2139,7 @@ void CL_ParseStatic (int large) } // copy it to the current state - ent->render.model = cl.model_precache[ent->state_baseline.modelindex]; + ent->render.model = CL_GetModelByIndex(ent->state_baseline.modelindex); ent->render.framegroupblend[0].frame = ent->state_baseline.frame; ent->render.framegroupblend[0].lerp = 1; // make torchs play out of sync