MCPcopy Create free account
hub / github.com/ErrorAtLine0/infinipaint / register_class

Method register_class

src/ClientData.cpp:59–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

57}
58
59void ClientData::register_class(World& world) {
60 world.netObjMan.register_class<ClientData, ClientData, ClientData, ClientData>({
61 .writeConstructorFuncClient = default_serialize_write_func<ClientData>,
62 .readConstructorFuncClient = default_serialize_read_constructor_func<ClientData>,
63 .readUpdateFuncClient = [&world](const NetObjTemporaryPtr<ClientData>& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr<NetServer::ClientData>&) {
64 ClientDataCommand command;
65 a(command);
66 switch(command) {
67 case ClientDataCommand::SET_CURSOR_POS:
68 a(o->cursorPos);
69 break;
70 case ClientDataCommand::SET_WINDOW_SIZE:
71 a(o->windowSize);
72 break;
73 case ClientDataCommand::SET_CAM_COORDS:
74 a(o->camCoords);
75 break;
76 case ClientDataCommand::SEND_CHAT_MESSAGE: {
77 std::string chatMessage;
78 a(chatMessage);
79 world.add_chat_message(o->displayName, chatMessage, Toolbar::ChatMessage::Type::NORMAL);
80 break;
81 }
82 case ClientDataCommand::SET_GRID_SIZE: {
83 a(o->gridSize);
84 if(o != world.ownClientData) {
85 if(world.ownClientData->gridSize < o->gridSize) {
86 world.scale_up(get_canvas_scale_up_amount(o->gridSize, world.ownClientData->gridSize));
87 world.ownClientData->gridSize = o->gridSize;
88 world.ownClientData.send_update_to_all(RELIABLE_COMMAND_CHANNEL, [](const NetObjTemporaryPtr<ClientData>& o, cereal::PortableBinaryOutputArchive & a) {
89 a(ClientDataCommand::SET_GRID_SIZE, o->gridSize);
90 });
91 }
92 }
93 break;
94 }
95 }
96 },
97 .writeConstructorFuncServer = default_serialize_write_func<ClientData>,
98 .readConstructorFuncServer = default_serialize_read_constructor_func<ClientData>,
99 .readUpdateFuncServer = [&world](const NetObjTemporaryPtr<ClientData>& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr<NetServer::ClientData>& c) {
100 ClientDataCommand command;
101 a(command);
102 switch(command) {
103 case ClientDataCommand::SET_CURSOR_POS:
104 a(o->cursorPos);
105 o.send_server_update_to_all_clients_except(c, UNRELIABLE_COMMAND_CHANNEL, [](const NetObjTemporaryPtr<ClientData>& o, cereal::PortableBinaryOutputArchive & a) {
106 a(ClientDataCommand::SET_CURSOR_POS, o->cursorPos);
107 });
108 break;
109 case ClientDataCommand::SET_WINDOW_SIZE:
110 a(o->windowSize);
111 o.send_server_update_to_all_clients_except(c, RELIABLE_COMMAND_CHANNEL, [](const NetObjTemporaryPtr<ClientData>& o, cereal::PortableBinaryOutputArchive & a) {
112 a(ClientDataCommand::SET_WINDOW_SIZE, o->windowSize);
113 });
114 break;
115 case ClientDataCommand::SET_CAM_COORDS:
116 a(o->camCoords);

Callers

nothing calls this directly

Tested by

no test coverage detected