+5
-3
client/src/components/network_interface.rs
+5
-3
client/src/components/network_interface.rs
···
44
44
join_players(packet.ids, &mut commands, &mut meshes, &mut materials, &mut net_manager);
45
45
}
46
46
PacketTypes::PlayerLeavePacket(packet) => {
47
-
leave_player(packet.id, &mut commands, players);
47
+
leave_player(packet.id, &mut commands, players, &mut net_manager);
48
48
}
49
49
PacketTypes::UpdateClientsPositions(packet) => {
50
50
let mut map = HashMap::new();
···
98
98
99
99
fn leave_player(
100
100
id: String,
101
-
102
101
commands: &mut Commands,
103
102
104
-
players: Query<(Entity, &mut RemotePlayer)>
103
+
players: Query<(Entity, &mut RemotePlayer)>,
104
+
net_manager: &mut Connection
105
105
){
106
+
net_manager.stop_listening_for_player_voice(&id);
107
+
106
108
for ( entity, player ) in players{
107
109
if id == player.id{
108
110
commands.entity(entity).despawn();
+5
client/src/net/connection.rs
+5
client/src/net/connection.rs
···
117
117
voice_queue
118
118
}
119
119
120
+
pub fn stop_listening_for_player_voice( &mut self, id: &String ){
121
+
let mut voices = self.voice_queues.write().unwrap();
122
+
voices.remove(id);
123
+
}
124
+
120
125
pub fn recv_event(&mut self) -> anyhow::Result<NetClientCommand>{
121
126
Ok(self.net_recv.try_recv()?)
122
127
}