@@ 97,13 97,21 @@ pub async fn handle_client(mgr: ClientManager, data: Arc<RwLock<PhysicsData>>, 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 });
}