#pragma once #include "Helpers/NetworkingObjects/NetObjPtr.decl.hpp" #include "NetObjPtr.hpp" namespace NetworkingObjects { template void register_generic_serialized_class(NetObjManagerTypeList& t) { t.register_class({ .writeConstructorFuncClient = [](const NetObjPtr& o, cereal::PortableBinaryOutputArchive& a) { a(*o); }, .readConstructorFuncClient = [](const NetObjPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr&) { a(*o); }, .readUpdateFuncClient = [](const NetObjPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr&) { a(*o); }, .writeConstructorFuncServer = [](const NetObjPtr& o, cereal::PortableBinaryOutputArchive& a) { a(*o); }, .readConstructorFuncServer = [](const NetObjPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr&) { a(*o); }, .readUpdateFuncServer = [](const NetObjPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr&) { a(*o); o.send_server_update_to_all_clients(RELIABLE_COMMAND_CHANNEL, [](const NetObjPtr& o, cereal::PortableBinaryOutputArchive& a) { a(*o); }); }, }); } template void generic_serialized_class_send_update_to_all(const NetworkingObjects::NetObjPtr& o) { o.send_update_to_all(RELIABLE_COMMAND_CHANNEL, [](const NetworkingObjects::NetObjPtr& o, cereal::PortableBinaryOutputArchive& a) { a(*o); }); } }