X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fclientiface.cpp;h=8ae2efada1e14e3605390a720d38dbf35d333da0;hb=fe3ea090d17ced157bd8fdd047b6b635a1413a76;hp=53c3fe9cd282ae4863442f0134c8df5172aae75d;hpb=ba7cf30df93836247a9232c285ca85659d6578e5;p=minetest.git diff --git a/src/clientiface.cpp b/src/clientiface.cpp index 53c3fe9cd..8ae2efada 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -27,7 +27,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "serverenvironment.h" #include "map.h" #include "emerge.h" -#include "content_sao.h" // TODO this is used for cleanup of only +#include "server/luaentity_sao.h" +#include "server/player_sao.h" #include "log.h" #include "util/srp.h" #include "face_position_cache.h" @@ -79,10 +80,11 @@ LuaEntitySAO *getAttachedObject(PlayerSAO *sao, ServerEnvironment *env) int id; std::string bone; v3f dummy; - sao->getAttachment(&id, &bone, &dummy, &dummy); + bool force_visible; + sao->getAttachment(&id, &bone, &dummy, &dummy, &force_visible); ServerActiveObject *ao = env->getActiveObject(id); while (id && ao) { - ao->getAttachment(&id, &bone, &dummy, &dummy); + ao->getAttachment(&id, &bone, &dummy, &dummy, &force_visible); if (id) ao = env->getActiveObject(id); } @@ -97,7 +99,6 @@ void RemoteClient::GetNextBlocks ( { // Increment timers m_nothing_to_send_pause_timer -= dtime; - m_nearest_unsent_reset_timer += dtime; if (m_nothing_to_send_pause_timer >= 0) return; @@ -134,36 +135,8 @@ void RemoteClient::GetNextBlocks ( // Camera position and direction v3f camera_pos = sao->getEyePosition(); v3f camera_dir = v3f(0,0,1); - camera_dir.rotateYZBy(sao->getPitch()); - camera_dir.rotateXZBy(sao->getYaw()); - - /*infostream<<"camera_dir=("<getPlayerName(peer_id)< ClientInterface::getClientIDs(ClientState min_state) { std::vector reply; - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); for (const auto &m_client : m_clients) { if (m_client.second->getState() >= min_state) @@ -660,7 +640,7 @@ std::vector ClientInterface::getClientIDs(ClientState min_state) void ClientInterface::markBlockposAsNotSent(const v3s16 &pos) { - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); for (const auto &client : m_clients) { if (client.second->getState() >= CS_Active) client.second->SetBlockNotSent(pos); @@ -692,7 +672,6 @@ void ClientInterface::UpdatePlayerList() std::vector clients = getClientIDs(); m_clients_names.clear(); - if (!clients.empty()) infostream<<"Players:"<getName() << "\t"; { - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); RemoteClient* client = lockedGetClientNoEx(i); if (client) client->PrintInfo(infostream); @@ -724,7 +703,7 @@ void ClientInterface::send(session_t peer_id, u8 channelnum, void ClientInterface::sendToAll(NetworkPacket *pkt) { - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); for (auto &client_it : m_clients) { RemoteClient *client = client_it.second; @@ -736,34 +715,9 @@ void ClientInterface::sendToAll(NetworkPacket *pkt) } } -void ClientInterface::sendToAllCompat(NetworkPacket *pkt, NetworkPacket *legacypkt, - u16 min_proto_ver) -{ - MutexAutoLock clientslock(m_clients_mutex); - for (auto &client_it : m_clients) { - RemoteClient *client = client_it.second; - NetworkPacket *pkt_to_send = nullptr; - - if (client->net_proto_version >= min_proto_ver) { - pkt_to_send = pkt; - } else if (client->net_proto_version != 0) { - pkt_to_send = legacypkt; - } else { - warningstream << "Client with unhandled version to handle: '" - << client->net_proto_version << "'"; - continue; - } - - m_con->Send(client->peer_id, - clientCommandFactoryTable[pkt_to_send->getCommand()].channel, - pkt_to_send, - clientCommandFactoryTable[pkt_to_send->getCommand()].reliable); - } -} - RemoteClient* ClientInterface::getClientNoEx(session_t peer_id, ClientState state_min) { - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); RemoteClientMap::const_iterator n = m_clients.find(peer_id); // The client may not exist; clients are immediately removed if their // access is denied, and this event occurs later then. @@ -792,7 +746,7 @@ RemoteClient* ClientInterface::lockedGetClientNoEx(session_t peer_id, ClientStat ClientState ClientInterface::getClientState(session_t peer_id) { - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); RemoteClientMap::const_iterator n = m_clients.find(peer_id); // The client may not exist; clients are immediately removed if their // access is denied, and this event occurs later then. @@ -804,7 +758,7 @@ ClientState ClientInterface::getClientState(session_t peer_id) void ClientInterface::setPlayerName(session_t peer_id, const std::string &name) { - MutexAutoLock clientslock(m_clients_mutex); + RecursiveMutexAutoLock clientslock(m_clients_mutex); RemoteClientMap::iterator n = m_clients.find(peer_id); // The client may not exist; clients are immediately removed if their // access is denied, and this event occurs later then. @@ -814,7 +768,7 @@ void ClientInterface::setPlayerName(session_t peer_id, const std::string &name) void ClientInterface::DeleteClient(session_t peer_id) { - MutexAutoLock conlock(m_clients_mutex); + RecursiveMutexAutoLock conlock(m_clients_mutex); // Error check RemoteClientMap::iterator n = m_clients.find(peer_id); @@ -844,7 +798,7 @@ void ClientInterface::DeleteClient(session_t peer_id) void ClientInterface::CreateClient(session_t peer_id) { - MutexAutoLock conlock(m_clients_mutex); + RecursiveMutexAutoLock conlock(m_clients_mutex); // Error check RemoteClientMap::iterator n = m_clients.find(peer_id); @@ -860,7 +814,7 @@ void ClientInterface::CreateClient(session_t peer_id) void ClientInterface::event(session_t peer_id, ClientStateEvent event) { { - MutexAutoLock clientlock(m_clients_mutex); + RecursiveMutexAutoLock clientlock(m_clients_mutex); // Error check RemoteClientMap::iterator n = m_clients.find(peer_id); @@ -881,7 +835,7 @@ void ClientInterface::event(session_t peer_id, ClientStateEvent event) u16 ClientInterface::getProtocolVersion(session_t peer_id) { - MutexAutoLock conlock(m_clients_mutex); + RecursiveMutexAutoLock conlock(m_clients_mutex); // Error check RemoteClientMap::iterator n = m_clients.find(peer_id); @@ -896,7 +850,7 @@ u16 ClientInterface::getProtocolVersion(session_t peer_id) void ClientInterface::setClientVersion(session_t peer_id, u8 major, u8 minor, u8 patch, const std::string &full) { - MutexAutoLock conlock(m_clients_mutex); + RecursiveMutexAutoLock conlock(m_clients_mutex); // Error check RemoteClientMap::iterator n = m_clients.find(peer_id);