Removed static variables and properly initialised in setup, which

should allow this protocol to work for more than one race.
Back-ported to master.
This commit is contained in:
hiker 2016-04-01 16:15:37 +11:00
parent 7b3fc04d26
commit 68f5259f4d
2 changed files with 17 additions and 11 deletions

View File

@ -10,14 +10,6 @@
KartUpdateProtocol::KartUpdateProtocol() : Protocol(PROTOCOL_KART_UPDATE)
{
// Allocate arrays to store one position and rotation for each kart
// (which is the update information from the server to the client).
m_next_positions.resize(World::getWorld()->getNumKarts());
m_next_quaternions.resize(World::getWorld()->getNumKarts());
// This flag keeps track if valid data for an update is in
// the arrays
m_was_updated = false;
} // KartUpdateProtocol
// ----------------------------------------------------------------------------
@ -28,6 +20,16 @@ KartUpdateProtocol::~KartUpdateProtocol()
// ----------------------------------------------------------------------------
void KartUpdateProtocol::setup()
{
// Allocate arrays to store one position and rotation for each kart
// (which is the update information from the server to the client).
m_next_positions.resize(World::getWorld()->getNumKarts());
m_next_quaternions.resize(World::getWorld()->getNumKarts());
// This flag keeps track if valid data for an update is in
// the arrays
m_was_updated = false;
m_previous_time = 0;
} // setup
// ----------------------------------------------------------------------------
@ -73,11 +75,11 @@ void KartUpdateProtocol::update(float dt)
{
if (!World::getWorld())
return;
static double time = 0;
double current_time = StkTime::getRealTime();
if (current_time > time + 0.1) // 10 updates per second
if (current_time > m_previous_time + 0.1) // 10 updates per second
{
time = current_time;
m_previous_time = current_time;
if (NetworkConfig::get()->isServer())
{
World *world = World::getWorld();

View File

@ -25,6 +25,10 @@ private:
/** True if a new update for the kart positions was received. */
bool m_was_updated;
/** Time the last kart update was sent. Used to send updates with
* a fixed frequency. */
double m_previous_time;
public:
KartUpdateProtocol();
virtual ~KartUpdateProtocol();