2
0
mirror of https://github.com/FWGS/xash3d-fwgs synced 2024-11-22 01:45:19 +01:00

engine: client: another fix baselines and entities parsing for GoldSrc, ensure we always call MSG_EndBitWriting

This commit is contained in:
Alibek Omarov 2024-10-14 03:15:36 +03:00
parent 87c88f7463
commit ff47fbaedc
2 changed files with 5 additions and 11 deletions

View File

@ -1230,9 +1230,6 @@ void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
Delta_InitClient (); // finalize client delta's
if( proto == PROTO_GOLDSRC )
MSG_StartBitWriting( msg );
while( 1 )
{
cl_entity_t *ent;
@ -1270,7 +1267,6 @@ void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
if( proto == PROTO_GOLDSRC )
{
int type = MSG_ReadUBitLong( msg, 2 );
int bits = MSG_GetNumBitsWritten( msg );
int delta_type;
if( player ) delta_type = DT_ENTITY_STATE_PLAYER_T;
@ -1278,6 +1274,7 @@ void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
else delta_type = DT_ENTITY_STATE_T;
Delta_ReadGSFields( msg, delta_type, &ent->prevstate, &ent->baseline, 1.0f );
ent->baseline.entityType = type;
}
else MSG_ReadDeltaEntity( msg, &nullstate, &ent->baseline, newnum, player, 1.0f );
@ -1302,9 +1299,6 @@ void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
}
}
}
if( proto == PROTO_GOLDSRC )
MSG_EndBitWriting( msg );
}
/*

View File

@ -191,7 +191,6 @@ static void CL_FlushEntityPacketGS( frame_t *frame, sizebuf_t *msg )
if( MSG_ReadWord( msg ) != 0 )
{
MSG_SeekToBit( msg, -16, SEEK_CUR );
num = CL_ParseDeltaHeader( msg, false, num, &hdr );
}
else break;
@ -204,8 +203,6 @@ static void CL_FlushEntityPacketGS( frame_t *frame, sizebuf_t *msg )
Delta_ReadGSFields( msg, CL_GetEntityDelta( &hdr, num ), &from, &to, cl.mtime[0] );
}
MSG_EndBitWriting( msg );
}
static void CL_DeltaEntityGS( const delta_header_t *hdr, sizebuf_t *msg, frame_t *frame, int newnum, entity_state_t *from, qboolean has_update )
@ -301,7 +298,9 @@ static int CL_ParsePacketEntitiesGS( sizebuf_t *msg, qboolean delta )
if( !CL_ValidateDeltaPacket( oldpacket, oldframe ))
{
MSG_StartBitWriting( msg );
CL_FlushEntityPacketGS( frame, msg );
MSG_EndBitWriting( msg );
return playerbytes;
}
}
@ -648,8 +647,9 @@ void CL_ParseGoldSrcServerMessage( sizebuf_t *msg )
cl.frames[cl.parsecountmod].graphdata.event += MSG_GetNumBytesRead( msg ) - bufStart;
break;
case svc_spawnbaseline:
MSG_StartBitWriting( msg );
CL_ParseBaseline( msg, PROTO_GOLDSRC );
break;
MSG_EndBitWriting( msg );
break;
case svc_setpause:
cl.paused = ( MSG_ReadOneBit( msg ) != 0 );