[raknet] Implement ReliabilityLayer::SetPing(...)

This commit is contained in:
RD42 2024-04-14 22:23:30 +08:00
parent 2a5feab064
commit 67e6587d87
2 changed files with 37 additions and 1 deletions

View File

@ -15,6 +15,28 @@ ReliabilityLayer::ReliabilityLayer()
void ReliabilityLayer::InitializeVariables( void )
{
// TODO: ReliabilityLayer::InitializeVariables
SetPing( 1000 );
}
//-------------------------------------------------------------------------------------------------------
// How long to wait between packet resends
//-------------------------------------------------------------------------------------------------------
void ReliabilityLayer::SetPing( RakNetTime i )
{
//assert(i < (RakNetTimeNS)timeoutTime*1000);
if (i > timeoutTime)
ping=500;
else
ping = i;
if (ping < 30)
ping=30; // Leave a buffer for variations in ping
#ifndef _RELEASE
if (ping < (RakNetTime)(minExtraPing+extraPingVariance)*2)
ping=(minExtraPing+extraPingVariance)*2;
#endif
UpdateNextActionTime();
}
//-------------------------------------------------------------------------------------------------------

View File

@ -13,6 +13,10 @@ public:
/// Constructor
ReliabilityLayer();
/// Sets the ping, which is used by the reliability layer to determine how long to wait for resends. Mostly for flow control.
/// \param[in] The ping time.
void SetPing( RakNetTime i );
private:
// Initialize the variables
@ -25,9 +29,19 @@ private:
RakNetTime ping;
char _gap[1020];
char _gap2D1[2];
RakNetTime timeoutTime; // How long to wait in MS before timing someone out
char _gap2D7[1014];
RakNetTimeNS ackTimeIncrement;
char _gap6D1[25];
// Internet simulator
RakNetTime minExtraPing, extraPingVariance;
};
#endif