|
|
@ -473,13 +473,13 @@ qboolean Delta_AddField( const char *pStructName, const char *pName, int flags, |
|
|
|
|
|
|
|
|
|
|
|
void Delta_WriteTableField( sizebuf_t *msg, int tableIndex, const delta_t *pField ) |
|
|
|
void Delta_WriteTableField( sizebuf_t *msg, int tableIndex, const delta_t *pField ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int nameIndex; |
|
|
|
int nameIndex; |
|
|
|
delta_info_t *dt; |
|
|
|
delta_info_t *dt; |
|
|
|
|
|
|
|
|
|
|
|
Assert( pField != NULL ); |
|
|
|
Assert( pField != NULL ); |
|
|
|
|
|
|
|
|
|
|
|
if( !COM_CheckString( pField->name )) |
|
|
|
if( !COM_CheckString( pField->name )) |
|
|
|
return; // not initialized ?
|
|
|
|
return;// not initialized ?
|
|
|
|
|
|
|
|
|
|
|
|
dt = Delta_FindStructByIndex( tableIndex ); |
|
|
|
dt = Delta_FindStructByIndex( tableIndex ); |
|
|
|
Assert( dt && dt->bInitialized ); |
|
|
|
Assert( dt && dt->bInitialized ); |
|
|
@ -488,20 +488,20 @@ void Delta_WriteTableField( sizebuf_t *msg, int tableIndex, const delta_t *pFiel |
|
|
|
Assert( nameIndex >= 0 && nameIndex < dt->maxFields ); |
|
|
|
Assert( nameIndex >= 0 && nameIndex < dt->maxFields ); |
|
|
|
|
|
|
|
|
|
|
|
MSG_BeginServerCmd( msg, svc_deltatable ); |
|
|
|
MSG_BeginServerCmd( msg, svc_deltatable ); |
|
|
|
MSG_WriteUBitLong( msg, tableIndex, 4 ); // assume we support 16 network tables
|
|
|
|
MSG_WriteUBitLong( msg, tableIndex, 4 ); // assume we support 16 network tables
|
|
|
|
MSG_WriteUBitLong( msg, nameIndex, 8 ); // 255 fields by struct should be enough
|
|
|
|
MSG_WriteUBitLong( msg, nameIndex, 8 ); // 255 fields by struct should be enough
|
|
|
|
MSG_WriteUBitLong( msg, pField->flags, 10 ); // flags are indicated various input types
|
|
|
|
MSG_WriteUBitLong( msg, pField->flags, 10 ); // flags are indicated various input types
|
|
|
|
MSG_WriteUBitLong( msg, pField->bits - 1, 5 ); // max received value is 32 (32 bit)
|
|
|
|
MSG_WriteUBitLong( msg, pField->bits - 1, 5 ); // max received value is 32 (32 bit)
|
|
|
|
|
|
|
|
|
|
|
|
// multipliers is null-compressed
|
|
|
|
// multipliers is null-compressed
|
|
|
|
if( pField->multiplier != 1.0f ) |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
MSG_WriteOneBit( msg, 1 ); |
|
|
|
MSG_WriteOneBit( msg, 1 ); |
|
|
|
MSG_WriteFloat( msg, pField->multiplier ); |
|
|
|
MSG_WriteFloat( msg, pField->multiplier ); |
|
|
|
} |
|
|
|
} |
|
|
|
else MSG_WriteOneBit( msg, 0 ); |
|
|
|
else MSG_WriteOneBit( msg, 0 ); |
|
|
|
|
|
|
|
|
|
|
|
if( pField->post_multiplier != 1.0f ) |
|
|
|
if( pField->post_multiplier <= 0.9999f || pField->post_multiplier >= 1.0001f ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
MSG_WriteOneBit( msg, 1 ); |
|
|
|
MSG_WriteOneBit( msg, 1 ); |
|
|
|
MSG_WriteFloat( msg, pField->post_multiplier ); |
|
|
|
MSG_WriteFloat( msg, pField->post_multiplier ); |
|
|
@ -898,7 +898,7 @@ int Delta_ClampIntegerField( delta_t *pField, int iValue, qboolean bSigned, int |
|
|
|
{ |
|
|
|
{ |
|
|
|
#ifdef _DEBUG |
|
|
|
#ifdef _DEBUG |
|
|
|
if( numbits < 32 && abs( iValue ) >= (uint)BIT( numbits )) |
|
|
|
if( numbits < 32 && abs( iValue ) >= (uint)BIT( numbits )) |
|
|
|
Con_Reportf( "%s %d overflow %d\n", pField->name, abs( iValue ), (uint)BIT( numbits )); |
|
|
|
Con_Reportf( S_WARN "Delta_ClampIntegerField: field %s = %d overflowed %d\n", pField->name, abs( iValue ), (uint)BIT( numbits )); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
if( numbits < 32 ) |
|
|
|
if( numbits < 32 ) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -919,7 +919,7 @@ compare fields by offsets |
|
|
|
assume from and to is valid |
|
|
|
assume from and to is valid |
|
|
|
===================== |
|
|
|
===================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
qboolean Delta_CompareField( delta_t *pField, void *from, void *to, float timebase ) |
|
|
|
qboolean Delta_CompareField( delta_t *pField, void *from, void *to, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
qboolean bSigned = ( pField->flags & DT_SIGNED ) ? true : false; |
|
|
|
qboolean bSigned = ( pField->flags & DT_SIGNED ) ? true : false; |
|
|
|
float val_a, val_b; |
|
|
|
float val_a, val_b; |
|
|
@ -949,8 +949,12 @@ qboolean Delta_CompareField( delta_t *pField, void *from, void *to, float timeba |
|
|
|
|
|
|
|
|
|
|
|
fromF = Delta_ClampIntegerField( pField, fromF, bSigned, pField->bits ); |
|
|
|
fromF = Delta_ClampIntegerField( pField, fromF, bSigned, pField->bits ); |
|
|
|
toF = Delta_ClampIntegerField( pField, toF, bSigned, pField->bits ); |
|
|
|
toF = Delta_ClampIntegerField( pField, toF, bSigned, pField->bits ); |
|
|
|
if( pField->multiplier != 1.0f ) fromF *= pField->multiplier; |
|
|
|
|
|
|
|
if( pField->multiplier != 1.0f ) toF *= pField->multiplier; |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
fromF *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
toF *= pField->multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & DT_SHORT ) |
|
|
|
else if( pField->flags & DT_SHORT ) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -967,8 +971,12 @@ qboolean Delta_CompareField( delta_t *pField, void *from, void *to, float timeba |
|
|
|
|
|
|
|
|
|
|
|
fromF = Delta_ClampIntegerField( pField, fromF, bSigned, pField->bits ); |
|
|
|
fromF = Delta_ClampIntegerField( pField, fromF, bSigned, pField->bits ); |
|
|
|
toF = Delta_ClampIntegerField( pField, toF, bSigned, pField->bits ); |
|
|
|
toF = Delta_ClampIntegerField( pField, toF, bSigned, pField->bits ); |
|
|
|
if( pField->multiplier != 1.0f ) fromF *= pField->multiplier; |
|
|
|
|
|
|
|
if( pField->multiplier != 1.0f ) toF *= pField->multiplier; |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
fromF *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
toF *= pField->multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & DT_INTEGER ) |
|
|
|
else if( pField->flags & DT_INTEGER ) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -991,8 +999,10 @@ qboolean Delta_CompareField( delta_t *pField, void *from, void *to, float timeba |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
fromF = Delta_ClampIntegerField( pField, fromF, bSigned, pField->bits ); |
|
|
|
fromF = Delta_ClampIntegerField( pField, fromF, bSigned, pField->bits ); |
|
|
|
toF = Delta_ClampIntegerField( pField, toF, bSigned, pField->bits ); |
|
|
|
toF = Delta_ClampIntegerField( pField, toF, bSigned, pField->bits ); |
|
|
|
if( pField->multiplier != 1.0f ) fromF *= pField->multiplier; |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
if( pField->multiplier != 1.0f ) toF *= pField->multiplier; |
|
|
|
fromF *= pField->multiplier; |
|
|
|
|
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
toF *= pField->multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & ( DT_ANGLE|DT_FLOAT )) |
|
|
|
else if( pField->flags & ( DT_ANGLE|DT_FLOAT )) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1002,10 +1012,10 @@ qboolean Delta_CompareField( delta_t *pField, void *from, void *to, float timeba |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & DT_TIMEWINDOW_8 ) |
|
|
|
else if( pField->flags & DT_TIMEWINDOW_8 ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
val_a = Q_rint((*(float *)((byte *)from + pField->offset )) * 100.0f ); |
|
|
|
val_a = Q_rint((*(float *)((byte *)from + pField->offset )) * 100.0 ); |
|
|
|
val_b = Q_rint((*(float *)((byte *)to + pField->offset )) * 100.0f ); |
|
|
|
val_b = Q_rint((*(float *)((byte *)to + pField->offset )) * 100.0 ); |
|
|
|
val_a -= Q_rint(timebase * 100.0f); |
|
|
|
val_a -= Q_rint(timebase * 100.0); |
|
|
|
val_b -= Q_rint(timebase * 100.0f); |
|
|
|
val_b -= Q_rint(timebase * 100.0); |
|
|
|
fromF = *((int *)&val_a); |
|
|
|
fromF = *((int *)&val_a); |
|
|
|
toF = *((int *)&val_b); |
|
|
|
toF = *((int *)&val_b); |
|
|
|
} |
|
|
|
} |
|
|
@ -1014,7 +1024,7 @@ qboolean Delta_CompareField( delta_t *pField, void *from, void *to, float timeba |
|
|
|
val_a = (*(float *)((byte *)from + pField->offset )); |
|
|
|
val_a = (*(float *)((byte *)from + pField->offset )); |
|
|
|
val_b = (*(float *)((byte *)to + pField->offset )); |
|
|
|
val_b = (*(float *)((byte *)to + pField->offset )); |
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier != 1.0f ) |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
val_a *= pField->multiplier; |
|
|
|
val_a *= pField->multiplier; |
|
|
|
val_b *= pField->multiplier; |
|
|
|
val_b *= pField->multiplier; |
|
|
@ -1050,7 +1060,7 @@ Delta_TestBaseline |
|
|
|
compare baselines to find optimal |
|
|
|
compare baselines to find optimal |
|
|
|
===================== |
|
|
|
===================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
int Delta_TestBaseline( entity_state_t *from, entity_state_t *to, qboolean player, float timebase ) |
|
|
|
int Delta_TestBaseline( entity_state_t *from, entity_state_t *to, qboolean player, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
delta_info_t *dt = NULL; |
|
|
|
delta_info_t *dt = NULL; |
|
|
|
delta_t *pField; |
|
|
|
delta_t *pField; |
|
|
@ -1108,9 +1118,9 @@ write fields by offsets |
|
|
|
assume from and to is valid |
|
|
|
assume from and to is valid |
|
|
|
===================== |
|
|
|
===================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
qboolean Delta_WriteField( sizebuf_t *msg, delta_t *pField, void *from, void *to, float timebase ) |
|
|
|
qboolean Delta_WriteField( sizebuf_t *msg, delta_t *pField, void *from, void *to, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
qboolean bSigned = ( pField->flags & DT_SIGNED ) ? true : false; |
|
|
|
qboolean bSigned = ( pField->flags & DT_SIGNED ) ? true : false; |
|
|
|
float flValue, flAngle, flTime; |
|
|
|
float flValue, flAngle, flTime; |
|
|
|
uint iValue; |
|
|
|
uint iValue; |
|
|
|
const char *pStr; |
|
|
|
const char *pStr; |
|
|
@ -1130,7 +1140,10 @@ qboolean Delta_WriteField( sizebuf_t *msg, delta_t *pField, void *from, void *to |
|
|
|
else |
|
|
|
else |
|
|
|
iValue = *(uint8_t *)((int8_t *)to + pField->offset ); |
|
|
|
iValue = *(uint8_t *)((int8_t *)to + pField->offset ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
if( pField->multiplier != 1.0f ) iValue *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier < 0.9999f || pField->multiplier > 1.0001f ) |
|
|
|
|
|
|
|
iValue *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & DT_SHORT ) |
|
|
|
else if( pField->flags & DT_SHORT ) |
|
|
@ -1140,7 +1153,10 @@ qboolean Delta_WriteField( sizebuf_t *msg, delta_t *pField, void *from, void *to |
|
|
|
else |
|
|
|
else |
|
|
|
iValue = *(uint16_t *)((int8_t *)to + pField->offset ); |
|
|
|
iValue = *(uint16_t *)((int8_t *)to + pField->offset ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
if( pField->multiplier != 1.0f ) iValue *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier < 0.9999f || pField->multiplier > 1.0001f ) |
|
|
|
|
|
|
|
iValue *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & DT_INTEGER ) |
|
|
|
else if( pField->flags & DT_INTEGER ) |
|
|
@ -1157,13 +1173,16 @@ qboolean Delta_WriteField( sizebuf_t *msg, delta_t *pField, void *from, void *to |
|
|
|
#pragma GCC diagnostic pop |
|
|
|
#pragma GCC diagnostic pop |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
if( pField->multiplier != 1.0f ) iValue *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier < 0.9999f || pField->multiplier > 1.0001f ) |
|
|
|
|
|
|
|
iValue *= pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
} |
|
|
|
} |
|
|
|
else if( pField->flags & DT_FLOAT ) |
|
|
|
else if( pField->flags & DT_FLOAT ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
flValue = *(float *)((byte *)to + pField->offset ); |
|
|
|
flValue = *(float *)((byte *)to + pField->offset ); |
|
|
|
iValue = (int)(flValue * pField->multiplier); |
|
|
|
iValue = (int)((double)flValue * pField->multiplier); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
} |
|
|
|
} |
|
|
@ -1179,7 +1198,7 @@ qboolean Delta_WriteField( sizebuf_t *msg, delta_t *pField, void *from, void *to |
|
|
|
{ |
|
|
|
{ |
|
|
|
bSigned = true; // timewindow is always signed
|
|
|
|
bSigned = true; // timewindow is always signed
|
|
|
|
flValue = *(float *)((byte *)to + pField->offset ); |
|
|
|
flValue = *(float *)((byte *)to + pField->offset ); |
|
|
|
iValue = (int)Q_rint( timebase * 100.0f ) - (int)Q_rint( flValue * 100.0f ); |
|
|
|
iValue = (int)Q_rint( timebase * 100.0 ) - (int)Q_rint( flValue * 100.0 ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
iValue = Delta_ClampIntegerField( pField, iValue, bSigned, pField->bits ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
MSG_WriteBitLong( msg, iValue, pField->bits, bSigned ); |
|
|
|
} |
|
|
|
} |
|
|
@ -1207,7 +1226,7 @@ read fields by offsets |
|
|
|
assume 'from' and 'to' is valid |
|
|
|
assume 'from' and 'to' is valid |
|
|
|
===================== |
|
|
|
===================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, float timebase ) |
|
|
|
qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
qboolean bSigned = ( pField->flags & DT_SIGNED ) ? true : false; |
|
|
|
qboolean bSigned = ( pField->flags & DT_SIGNED ) ? true : false; |
|
|
|
float flValue, flAngle, flTime; |
|
|
|
float flValue, flAngle, flTime; |
|
|
@ -1225,7 +1244,8 @@ qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, |
|
|
|
if( bChanged ) |
|
|
|
if( bChanged ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
if( pField->multiplier != 1.0f ) iValue /= pField->multiplier; |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
iValue /= pField->multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1244,7 +1264,8 @@ qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, |
|
|
|
if( bChanged ) |
|
|
|
if( bChanged ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
if( pField->multiplier != 1.0f ) iValue /= pField->multiplier; |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
iValue /= pField->multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1267,7 +1288,8 @@ qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, |
|
|
|
if( bChanged ) |
|
|
|
if( bChanged ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
if( pField->multiplier != 1.0f ) iValue /= pField->multiplier; |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
iValue /= pField->multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1289,8 +1311,16 @@ qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, |
|
|
|
if( bChanged ) |
|
|
|
if( bChanged ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
flValue = (int)iValue * ( 1.0f / pField->multiplier ); |
|
|
|
if( bSigned ) |
|
|
|
flValue = flValue * pField->post_multiplier; |
|
|
|
flValue = (int)iValue; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
flValue = iValue; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
|
|
|
|
flValue = flValue / pField->multiplier; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( pField->post_multiplier <= 0.9999f || pField->post_multiplier >= 1.0001f) |
|
|
|
|
|
|
|
flValue = flValue * pField->post_multiplier; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1316,7 +1346,7 @@ qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, |
|
|
|
{ |
|
|
|
{ |
|
|
|
bSigned = true; // timewindow is always signed
|
|
|
|
bSigned = true; // timewindow is always signed
|
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
flTime = ((timebase * 100.0f) - iValue ) / 100.0f; |
|
|
|
flTime = (timebase * 100.0 - iValue) / 100.0; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1330,10 +1360,11 @@ qboolean Delta_ReadField( sizebuf_t *msg, delta_t *pField, void *from, void *to, |
|
|
|
{ |
|
|
|
{ |
|
|
|
bSigned = true; // timewindow is always signed
|
|
|
|
bSigned = true; // timewindow is always signed
|
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
iValue = MSG_ReadBitLong( msg, pField->bits, bSigned ); |
|
|
|
flTime = ((timebase * pField->multiplier) - iValue ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( pField->multiplier != 1.0f ) |
|
|
|
if( pField->multiplier <= 0.9999f || pField->multiplier >= 1.0001f ) |
|
|
|
flTime /= pField->multiplier; |
|
|
|
flTime = ( timebase * pField->multiplier - iValue ) / pField->multiplier; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
flTime = timebase - iValue; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1559,7 +1590,7 @@ Writes current client data only for local client |
|
|
|
Other clients can grab the client state from entity_state_t |
|
|
|
Other clients can grab the client state from entity_state_t |
|
|
|
================== |
|
|
|
================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void MSG_WriteClientData( sizebuf_t *msg, clientdata_t *from, clientdata_t *to, float timebase ) |
|
|
|
void MSG_WriteClientData( sizebuf_t *msg, clientdata_t *from, clientdata_t *to, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
delta_t *pField; |
|
|
|
delta_t *pField; |
|
|
|
delta_info_t *dt; |
|
|
|
delta_info_t *dt; |
|
|
@ -1599,7 +1630,7 @@ MSG_ReadClientData |
|
|
|
Read the clientdata |
|
|
|
Read the clientdata |
|
|
|
================== |
|
|
|
================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void MSG_ReadClientData( sizebuf_t *msg, clientdata_t *from, clientdata_t *to, float timebase ) |
|
|
|
void MSG_ReadClientData( sizebuf_t *msg, clientdata_t *from, clientdata_t *to, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
#if !XASH_DEDICATED |
|
|
|
#if !XASH_DEDICATED |
|
|
|
delta_t *pField; |
|
|
|
delta_t *pField; |
|
|
@ -1640,7 +1671,7 @@ Writes current client data only for local client |
|
|
|
Other clients can grab the client state from entity_state_t |
|
|
|
Other clients can grab the client state from entity_state_t |
|
|
|
================== |
|
|
|
================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void MSG_WriteWeaponData( sizebuf_t *msg, weapon_data_t *from, weapon_data_t *to, float timebase, int index ) |
|
|
|
void MSG_WriteWeaponData( sizebuf_t *msg, weapon_data_t *from, weapon_data_t *to, double timebase, int index ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
delta_t *pField; |
|
|
|
delta_t *pField; |
|
|
|
delta_info_t *dt; |
|
|
|
delta_info_t *dt; |
|
|
@ -1679,7 +1710,7 @@ MSG_ReadWeaponData |
|
|
|
Read the clientdata |
|
|
|
Read the clientdata |
|
|
|
================== |
|
|
|
================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void MSG_ReadWeaponData( sizebuf_t *msg, weapon_data_t *from, weapon_data_t *to, float timebase ) |
|
|
|
void MSG_ReadWeaponData( sizebuf_t *msg, weapon_data_t *from, weapon_data_t *to, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
delta_t *pField; |
|
|
|
delta_t *pField; |
|
|
|
delta_info_t *dt; |
|
|
|
delta_info_t *dt; |
|
|
@ -1718,7 +1749,7 @@ If force is not set, then nothing at all will be generated if the entity is |
|
|
|
identical, under the assumption that the in-order delta code will catch it. |
|
|
|
identical, under the assumption that the in-order delta code will catch it. |
|
|
|
================== |
|
|
|
================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void MSG_WriteDeltaEntity( entity_state_t *from, entity_state_t *to, sizebuf_t *msg, qboolean force, int delta_type, float timebase, int baseline ) |
|
|
|
void MSG_WriteDeltaEntity( entity_state_t *from, entity_state_t *to, sizebuf_t *msg, qboolean force, int delta_type, double timebase, int baseline ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
delta_info_t *dt = NULL; |
|
|
|
delta_info_t *dt = NULL; |
|
|
|
delta_t *pField; |
|
|
|
delta_t *pField; |
|
|
@ -1820,7 +1851,7 @@ If the delta removes the entity, entity_state_t->number will be set to MAX_EDICT |
|
|
|
Can go from either a baseline or a previous packet_entity |
|
|
|
Can go from either a baseline or a previous packet_entity |
|
|
|
================== |
|
|
|
================== |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
qboolean MSG_ReadDeltaEntity( sizebuf_t *msg, entity_state_t *from, entity_state_t *to, int number, int delta_type, float timebase ) |
|
|
|
qboolean MSG_ReadDeltaEntity( sizebuf_t *msg, entity_state_t *from, entity_state_t *to, int number, int delta_type, double timebase ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
#if !XASH_DEDICATED |
|
|
|
#if !XASH_DEDICATED |
|
|
|
delta_info_t *dt = NULL; |
|
|
|
delta_info_t *dt = NULL; |
|
|
|