[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).
This commit is contained in:
parent
26b1fd0d84
commit
89dacb88ec
@ -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() {
|
||||
|
@ -249,6 +249,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
Block a user