X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=cl_parse.c;h=f0beef03a680ace737a90864e05ea1bfe6080641;hb=1e5a9fbe6fea029a9adcfcaab519783d66b4bbfe;hp=57b98790e8f29023df0e4541c4632f7a7b1d2791;hpb=2fa6c1c686a631ca835285d9f01eddf0dd58de85;p=xonotic%2Fdarkplaces.git diff --git a/cl_parse.c b/cl_parse.c index 57b98790..f0beef03 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -221,13 +221,13 @@ void CL_ParseEntityLump(char *entdata) data = entdata; if (!data) return; - if (!COM_ParseToken(&data)) + if (!COM_ParseToken(&data, false)) return; // error if (com_token[0] != '{') return; // error while (1) { - if (!COM_ParseToken(&data)) + if (!COM_ParseToken(&data, false)) return; // error if (com_token[0] == '}') break; // end of worldspawn @@ -237,7 +237,7 @@ void CL_ParseEntityLump(char *entdata) strcpy(key, com_token); while (key[strlen(key)-1] == ' ') // remove trailing spaces key[strlen(key)-1] = 0; - if (!COM_ParseToken(&data)) + if (!COM_ParseToken(&data, false)) return; // error strcpy(value, com_token); if (!strcmp("sky", key)) @@ -655,21 +655,26 @@ void CL_ParseUpdate (int bits) static entity_frame_t entityframe; void CL_ReadEntityFrame(void) { - entity_t *ent; - int i; - EntityFrame_Read(&cl.entitydatabase); - EntityFrame_FetchFrame(&cl.entitydatabase, EntityFrame_MostRecentlyRecievedFrameNum(&cl.entitydatabase), &entityframe); - for (i = 0;i < entityframe.numentities;i++) + if (dpprotocol == DPPROTOCOL_VERSION3) { - // copy the states - ent = &cl_entities[entityframe.entitydata[i].number]; - ent->state_previous = ent->state_current; - ent->state_current = entityframe.entitydata[i]; - CL_MoveLerpEntityStates(ent); - // the entity lives again... - entlife[ent->state_current.number] = 2; - cl_entities_active[ent->state_current.number] = true; + int i; + entity_t *ent; + EntityFrame_Read(&cl.entitydatabase); + EntityFrame_FetchFrame(&cl.entitydatabase, EntityFrame_MostRecentlyRecievedFrameNum(&cl.entitydatabase), &entityframe); + for (i = 0;i < entityframe.numentities;i++) + { + // copy the states + ent = &cl_entities[entityframe.entitydata[i].number]; + ent->state_previous = ent->state_current; + ent->state_current = entityframe.entitydata[i]; + CL_MoveLerpEntityStates(ent); + // the entity lives again... + entlife[ent->state_current.number] = 2; + cl_entities_active[ent->state_current.number] = true; + } } + else + EntityFrame4_CL_ReadFrame(&cl.entitydatabase4); } void CL_EntityUpdateSetup(void) @@ -678,18 +683,21 @@ void CL_EntityUpdateSetup(void) void CL_EntityUpdateEnd(void) { - int i; - // disable entities that disappeared this frame - for (i = 1;i < MAX_EDICTS;i++) + if (dpprotocol != DPPROTOCOL_VERSION4) { - // clear only the entities that were active last frame but not this - // frame, don't waste time clearing all entities (which would cause - // cache misses) - if (entlife[i]) + int i; + // disable entities that disappeared this frame + for (i = 1;i < MAX_EDICTS;i++) { - entlife[i]--; - if (!entlife[i]) - cl_entities[i].state_previous.active = cl_entities[i].state_current.active = 0; + // clear only the entities that were active last frame but not this + // frame, don't waste time clearing all entities (which would cause + // cache misses) + if (entlife[i]) + { + entlife[i]--; + if (!entlife[i]) + cl_entities[i].state_previous.active = cl_entities[i].state_current.active = 0; + } } } } @@ -1113,12 +1121,6 @@ void CL_ParseTempEntity(void) count = MSG_ReadByte(); CL_BloodPuff(pos, dir, count); break; - case TE_BLOOD2: - // blood puff - MSG_ReadVector(pos); - CL_FindNonSolidLocation(pos, pos, 4); - CL_BloodPuff(pos, vec3_origin, 10); - break; case TE_SPARK: // spark shower MSG_ReadVector(pos);