2025-12-06 14:16:50 +03:00
|
|
|
#include "NetObjManager.hpp"
|
2025-12-07 17:35:27 +03:00
|
|
|
#include "NetObjPtr.hpp"
|
2025-12-06 14:16:50 +03:00
|
|
|
|
|
|
|
|
namespace NetworkingObjects {
|
2025-12-07 17:35:27 +03:00
|
|
|
NetObjManager::NetObjManager(std::shared_ptr<NetObjIDGenerator> initIDGen, std::shared_ptr<NetObjManagerTypeList> initTypeList, bool initIsServer):
|
|
|
|
|
isServer(initIsServer),
|
2025-12-06 14:16:50 +03:00
|
|
|
idGen(initIDGen),
|
|
|
|
|
typeList(initTypeList),
|
|
|
|
|
nextTypeID(0)
|
|
|
|
|
{}
|
2025-12-07 23:09:17 +03:00
|
|
|
bool NetObjManager::is_server() const {
|
|
|
|
|
return isServer;
|
|
|
|
|
}
|
2025-12-07 17:35:27 +03:00
|
|
|
void NetObjManager::read_update_message(cereal::PortableBinaryInputArchive& a, const std::shared_ptr<NetServer::ClientData>& clientReceivedFrom) {
|
2025-12-06 14:16:50 +03:00
|
|
|
NetObjID id;
|
|
|
|
|
a(id);
|
|
|
|
|
auto it = objectData.find(id);
|
|
|
|
|
if(it == objectData.end())
|
|
|
|
|
return;
|
|
|
|
|
auto& netTypeIDData = typeList->netTypeIDData[it->second.netTypeID];
|
2025-12-07 17:35:27 +03:00
|
|
|
if(isServer)
|
|
|
|
|
netTypeIDData.readUpdateFuncServer(NetObjPtr<void>(this, id, it->second.p), a, clientReceivedFrom);
|
|
|
|
|
else
|
|
|
|
|
netTypeIDData.readUpdateFuncClient(NetObjPtr<void>(this, id, it->second.p), a, clientReceivedFrom);
|
2025-12-06 14:16:50 +03:00
|
|
|
}
|
|
|
|
|
void NetObjManager::set_client(std::shared_ptr<NetClient> initClient, MessageCommandType initUpdateCommandID) {
|
|
|
|
|
client = initClient;
|
|
|
|
|
updateCommandID = initUpdateCommandID;
|
|
|
|
|
}
|
|
|
|
|
void NetObjManager::set_server(std::shared_ptr<NetServer> initServer, MessageCommandType initUpdateCommandID) {
|
|
|
|
|
server = initServer;
|
|
|
|
|
updateCommandID = initUpdateCommandID;
|
|
|
|
|
}
|
|
|
|
|
}
|