diff options
author | MirceaKitsune <sonichedgehog_hyperblast00@yahoo.com> | 2013-02-08 22:54:01 +0200 |
---|---|---|
committer | darkrose <lisa@ltmnet.com> | 2013-02-14 06:21:30 +1000 |
commit | df3c925b3ccae3bdba125e6dc3ecc740739baeab (patch) | |
tree | 869c7e587022e2873ab3d125a6fca0b60ffaafb6 /src/server.cpp | |
parent | 86b906d015ccde4e8f576a4e61d7c4ae8842b45d (diff) | |
download | minetest-df3c925b3ccae3bdba125e6dc3ecc740739baeab.tar.gz minetest-df3c925b3ccae3bdba125e6dc3ecc740739baeab.tar.bz2 minetest-df3c925b3ccae3bdba125e6dc3ecc740739baeab.zip |
Improved Player Physics
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/server.cpp b/src/server.cpp index a8640ad10..572ef4d82 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2344,6 +2344,9 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) infostream<<"Server: Sending content to " <<getPlayerName(peer_id)<<std::endl; + // Send player movement settings + SendMovement(m_con, peer_id); + // Send item definitions SendItemDef(m_con, peer_id, m_itemdef); @@ -3534,6 +3537,32 @@ void Server::deletingPeer(con::Peer *peer, bool timeout) Static send methods */ +void Server::SendMovement(con::Connection &con, u16 peer_id) +{ + DSTACK(__FUNCTION_NAME); + std::ostringstream os(std::ios_base::binary); + + writeU16(os, TOCLIENT_MOVEMENT); + writeF1000(os, g_settings->getFloat("movement_acceleration_default")); + writeF1000(os, g_settings->getFloat("movement_acceleration_air")); + writeF1000(os, g_settings->getFloat("movement_acceleration_fast")); + writeF1000(os, g_settings->getFloat("movement_speed_walk")); + writeF1000(os, g_settings->getFloat("movement_speed_crouch")); + writeF1000(os, g_settings->getFloat("movement_speed_fast")); + writeF1000(os, g_settings->getFloat("movement_speed_climb")); + writeF1000(os, g_settings->getFloat("movement_speed_jump")); + writeF1000(os, g_settings->getFloat("movement_liquid_fluidity")); + writeF1000(os, g_settings->getFloat("movement_liquid_fluidity_smooth")); + writeF1000(os, g_settings->getFloat("movement_liquid_sink")); + writeF1000(os, g_settings->getFloat("movement_gravity")); + + // Make data buffer + std::string s = os.str(); + SharedBuffer<u8> data((u8*)s.c_str(), s.size()); + // Send as reliable + con.Send(peer_id, 0, data, true); +} + void Server::SendHP(con::Connection &con, u16 peer_id, u8 hp) { DSTACK(__FUNCTION_NAME); |