Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-21 19:06:15 +0000
committerStijn Buys <ingar@osirion.org>2008-02-21 19:06:15 +0000
commit8aa04fc836116a58f8ffd1e0c3539b9ea8a94ddf (patch)
treebb933edb3919ed67d05b098a6b97a73f01746762 /src/core/gameconnection.cc
parent41ad1e4c9e2a70d0a8811f4b035f0d3018045e61 (diff)
dedicated server, entity transfer
Diffstat (limited to 'src/core/gameconnection.cc')
-rw-r--r--src/core/gameconnection.cc29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/core/gameconnection.cc b/src/core/gameconnection.cc
index 43df1be..eeb4692 100644
--- a/src/core/gameconnection.cc
+++ b/src/core/gameconnection.cc
@@ -9,6 +9,7 @@
#include "sys/sys.h"
#include "net/net.h"
+#include "core/cvar.h"
#include "core/gameconnection.h"
namespace core
@@ -46,6 +47,7 @@ GameConnection::GameConnection(std::string const &connectionstr)
return;
}
+ connection_frametime = 0;
connection_running = true;
}
@@ -86,7 +88,32 @@ void GameConnection::frame(float seconds)
return;
}
- connection_network->frame(seconds);
+
+ float f = 0;
+ if (core::Cvar::sv_framerate->value()) {
+ connection_frametime += seconds;
+ f = 1.0f / core::Cvar::sv_framerate->value();
+ if (connection_frametime < f)
+ return;
+ } else {
+ connection_frametime = seconds;
+ }
+
+ connection_network->frame(connection_frametime);
+
+ if (localplayer()->control && localplayer()->control->dirty()) {
+ std::ostringstream netmsg;
+ netmsg << "cup " << localplayer()->control->id() << " ";
+ localplayer()->control->serialize_client_update(netmsg);
+ netmsg << "\n";
+
+ connection_network->send(netmsg.str());
+ localplayer()->control->entity_dirty = false;
+ //con_debug << netmsg.str();
+ }
+
+ connection_frametime += f;
+
}
}