MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / send_command

Method send_command

modules/multiplayer/scene_multiplayer.cpp:269–295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

267#endif
268
269Error SceneMultiplayer::send_command(int p_to, const uint8_t *p_packet, int p_packet_len) {
270 if (server_relay && get_unique_id() != 1 && p_to != 1 && multiplayer_peer->is_server_relay_supported()) {
271 // Send relay packet.
272 relay_buffer->seek(0);
273 relay_buffer->put_u8(NETWORK_COMMAND_SYS);
274 relay_buffer->put_u8(SYS_COMMAND_RELAY);
275 relay_buffer->put_32(p_to); // Set the destination.
276 relay_buffer->put_data(p_packet, p_packet_len);
277 multiplayer_peer->set_target_peer(1);
278 const Vector<uint8_t> data = relay_buffer->get_data_array();
279 return _send(data.ptr(), relay_buffer->get_position());
280 }
281 if (p_to > 0) {
282 ERR_FAIL_COND_V(!connected_peers.has(p_to), ERR_BUG);
283 multiplayer_peer->set_target_peer(p_to);
284 return _send(p_packet, p_packet_len);
285 } else {
286 for (const int &pid : connected_peers) {
287 if (p_to && pid == -p_to) {
288 continue;
289 }
290 multiplayer_peer->set_target_peer(pid);
291 _send(p_packet, p_packet_len);
292 }
293 return OK;
294 }
295}
296
297void SceneMultiplayer::_process_sys(int p_from, const uint8_t *p_packet, int p_packet_len, MultiplayerPeer::TransferMode p_mode, int p_channel) {
298 ERR_FAIL_COND_MSG(p_packet_len < SYS_CMD_SIZE, "Invalid packet received. Size too small.");

Callers 4

process_simplify_pathMethod · 0.45
_send_confirm_pathMethod · 0.45
_send_rpcMethod · 0.45
_send_rawMethod · 0.45

Calls 10

put_u8Method · 0.80
put_32Method · 0.80
get_data_arrayMethod · 0.80
seekMethod · 0.45
put_dataMethod · 0.45
set_target_peerMethod · 0.45
ptrMethod · 0.45
get_positionMethod · 0.45
hasMethod · 0.45

Tested by

no test coverage detected