From 1c63cbf204b1d2c667ce9f821ccb197d0ffb0ac3 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 11 May 2011 14:48:17 +0000 Subject: Review of the main loop timer, converted timers from float to unsigned long, corrected a number of timing bugs, improved client framerate stability. --- src/core/netserver.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/core/netserver.cc') diff --git a/src/core/netserver.cc b/src/core/netserver.cc index 0bd6350..d9a5bed 100644 --- a/src/core/netserver.cc +++ b/src/core/netserver.cc @@ -359,7 +359,7 @@ void NetServer::client_frame(NetClient *client, unsigned long timestamp) } else { // send a server frame marker - send_frame_marker(client, timestamp); + send_frame_marker(client, server()->timer().timestamp()); // send updates for entities in the zone for (Entity::Registry::iterator it = Entity::registry().begin(); it != Entity::registry().end(); it++) { @@ -411,6 +411,16 @@ void NetServer::client_frame(NetClient *client, unsigned long timestamp) } } +// transmit pending packets to all clients +void NetServer::transmit() +{ + // send updates to each client + for (Clients::iterator it = clients.begin(); it != clients.end(); it++) { + NetClient *client = *it; + client->transmit(); + } +} + // run a network server frame, send updates to clients void NetServer::frame(unsigned long timestamp) { @@ -730,7 +740,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me } else if (command.compare("ping") == 0) { unsigned long timestamp; if (msgstream >> timestamp) { - client->player()->set_ping(application()->timestamp() - server()->startup() - timestamp); + client->player()->set_ping(server()->timer().timestamp() - timestamp); } return; } -- cgit v1.2.3