~starkingdoms/starkingdoms

cde0f4a24c4e1a20c312e1a615f7fccf285286f9 — core 2 years ago 0cc333b
fix double mutable borrow with replacement
1 files changed, 11 insertions(+), 3 deletions(-)

M server/src/handler.rs
M server/src/handler.rs => server/src/handler.rs +11 -3
@@ 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 });
                            }