[MP] Fix remote net ID cleanup
Synchronizers for spawned nodes were not correctly keeping track of the
net ID assigned by the remote, preventing the replication from
performing the proper cleanup.
This resulted in errors being thrown when sync messages were received
after despawn (which is possible due to their unreliable nature).
(cherry picked from commit 89dacb88ec
)
This commit is contained in:
parent
1dfd92797e
commit
0b03a281e1
|
@ -49,11 +49,11 @@ void MultiplayerSynchronizer::_stop() {
|
|||
}
|
||||
#endif
|
||||
root_node_cache = ObjectID();
|
||||
reset();
|
||||
Node *node = is_inside_tree() ? get_node_or_null(root_path) : nullptr;
|
||||
if (node) {
|
||||
get_multiplayer()->object_configuration_remove(node, this);
|
||||
}
|
||||
reset();
|
||||
}
|
||||
|
||||
void MultiplayerSynchronizer::_start() {
|
||||
|
|
|
@ -246,6 +246,7 @@ Error SceneReplicationInterface::on_replication_start(Object *p_obj, Variant p_c
|
|||
uint32_t net_id = pending_sync_net_ids[0];
|
||||
pending_sync_net_ids.pop_front();
|
||||
peers_info[pending_spawn_remote].recv_sync_ids[net_id] = sync->get_instance_id();
|
||||
sync->set_net_id(net_id);
|
||||
|
||||
// Try to apply spawn state (before ready).
|
||||
if (pending_buffer_size > 0) {
|
||||
|
|
Loading…
Reference in New Issue