From cde0f4a24c4e1a20c312e1a615f7fccf285286f9 Mon Sep 17 00:00:00 2001 From: core Date: Tue, 11 Apr 2023 18:58:32 -0400 Subject: [PATCH] fix double mutable borrow with replacement --- server/src/handler.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/server/src/handler.rs b/server/src/handler.rs index c710e4d156e6c3c8078bb929e60fbdce65634d9f..1ce4d54bc25bdf10ef98ff768ecd55f1fa7771d5 100644 --- a/server/src/handler.rs +++ b/server/src/handler.rs @@ -97,13 +97,21 @@ pub async fn handle_client(mgr: ClientManager, data: Arc>, r { let mut data_handle = data.write().await; + + let mut rigid_body_set = data_handle.rigid_body_set.clone(); + let mut collider_set = data_handle.collider_set.clone(); + let player_body = RigidBodyBuilder::new(RigidBodyType::Dynamic) .translation(vector![0.0, 2100.0/SCALE]) .build(); let player_collider = ColliderBuilder::cuboid(1.0 / SCALE, 1.0 / SCALE).build(); - let player_handle = data_handle.rigid_body_set.insert(player_body); - // cannot mutably borrow twice - data_handle.collider_set.insert_with_parent(player_collider, player_handle, &mut data_handle.rigid_body_set); + let player_handle = rigid_body_set.insert(player_body); + + collider_set.insert_with_parent(player_collider, player_handle, &mut rigid_body_set); + + data_handle.rigid_body_set = rigid_body_set; + data_handle.collider_set = collider_set; + mgr.players.write().await.insert(remote_addr, Player { handle: player_handle }); }