engine: client: another fix baselines and entities parsing for GoldSrc, ensure we always call MSG_EndBitWriting
This commit is contained in:
parent
87c88f7463
commit
ff47fbaedc
2 changed files with 5 additions and 11 deletions
|
@ -1230,9 +1230,6 @@ void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
|
||||||
|
|
||||||
Delta_InitClient (); // finalize client delta's
|
Delta_InitClient (); // finalize client delta's
|
||||||
|
|
||||||
if( proto == PROTO_GOLDSRC )
|
|
||||||
MSG_StartBitWriting( msg );
|
|
||||||
|
|
||||||
while( 1 )
|
while( 1 )
|
||||||
{
|
{
|
||||||
cl_entity_t *ent;
|
cl_entity_t *ent;
|
||||||
|
@ -1270,7 +1267,6 @@ void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
|
||||||
if( proto == PROTO_GOLDSRC )
|
if( proto == PROTO_GOLDSRC )
|
||||||
{
|
{
|
||||||
int type = MSG_ReadUBitLong( msg, 2 );
|
int type = MSG_ReadUBitLong( msg, 2 );
|
||||||
int bits = MSG_GetNumBitsWritten( msg );
|
|
||||||
int delta_type;
|
int delta_type;
|
||||||
|
|
||||||
if( player ) delta_type = DT_ENTITY_STATE_PLAYER_T;
|
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;
|
else delta_type = DT_ENTITY_STATE_T;
|
||||||
|
|
||||||
Delta_ReadGSFields( msg, delta_type, &ent->prevstate, &ent->baseline, 1.0f );
|
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 );
|
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 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -191,7 +191,6 @@ static void CL_FlushEntityPacketGS( frame_t *frame, sizebuf_t *msg )
|
||||||
if( MSG_ReadWord( msg ) != 0 )
|
if( MSG_ReadWord( msg ) != 0 )
|
||||||
{
|
{
|
||||||
MSG_SeekToBit( msg, -16, SEEK_CUR );
|
MSG_SeekToBit( msg, -16, SEEK_CUR );
|
||||||
|
|
||||||
num = CL_ParseDeltaHeader( msg, false, num, &hdr );
|
num = CL_ParseDeltaHeader( msg, false, num, &hdr );
|
||||||
}
|
}
|
||||||
else break;
|
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] );
|
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 )
|
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 ))
|
if( !CL_ValidateDeltaPacket( oldpacket, oldframe ))
|
||||||
{
|
{
|
||||||
|
MSG_StartBitWriting( msg );
|
||||||
CL_FlushEntityPacketGS( frame, msg );
|
CL_FlushEntityPacketGS( frame, msg );
|
||||||
|
MSG_EndBitWriting( msg );
|
||||||
return playerbytes;
|
return playerbytes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -648,8 +647,9 @@ void CL_ParseGoldSrcServerMessage( sizebuf_t *msg )
|
||||||
cl.frames[cl.parsecountmod].graphdata.event += MSG_GetNumBytesRead( msg ) - bufStart;
|
cl.frames[cl.parsecountmod].graphdata.event += MSG_GetNumBytesRead( msg ) - bufStart;
|
||||||
break;
|
break;
|
||||||
case svc_spawnbaseline:
|
case svc_spawnbaseline:
|
||||||
|
MSG_StartBitWriting( msg );
|
||||||
CL_ParseBaseline( msg, PROTO_GOLDSRC );
|
CL_ParseBaseline( msg, PROTO_GOLDSRC );
|
||||||
break;
|
MSG_EndBitWriting( msg );
|
||||||
break;
|
break;
|
||||||
case svc_setpause:
|
case svc_setpause:
|
||||||
cl.paused = ( MSG_ReadOneBit( msg ) != 0 );
|
cl.paused = ( MSG_ReadOneBit( msg ) != 0 );
|
||||||
|
|
Loading…
Add table
Reference in a new issue