diff --git a/client/src/lib.rs b/client/src/lib.rs index d9038df8da..d68faaf8b1 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -105,7 +105,7 @@ impl Client { } pub fn set_view_distance(&mut self, view_distance: u32) { - self.view_distance = Some(view_distance.max(5).min(25)); + self.view_distance = Some(view_distance.max(1).min(25)); self.postbox .send_message(ClientMsg::SetViewDistance(self.view_distance.unwrap())); // Can't fail } @@ -230,9 +230,9 @@ impl Client { // Request chunks from the server. // TODO: This is really inefficient. - 'outer: for dist in 0..view_distance as i32 { - for i in chunk_pos.x - dist..chunk_pos.x + dist + 1 { - for j in chunk_pos.y - dist..chunk_pos.y + dist + 1 { + 'outer: for dist in 0..=view_distance as i32 { + for i in chunk_pos.x - dist..=chunk_pos.x + dist { + for j in chunk_pos.y - dist..=chunk_pos.y + dist { let key = Vec2::new(i, j); if self.state.terrain().get_key(key).is_none() && !self.pending_chunks.contains_key(&key) diff --git a/server/src/lib.rs b/server/src/lib.rs index dd1ca47691..4dc494d446 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -295,7 +295,7 @@ impl Server { .map(|e: i32| e.abs()) .reduce_max() as u32; - if player.view_distance.map(|vd| dist < vd).unwrap_or(false) { + if player.view_distance.map(|vd| dist <= vd).unwrap_or(false) { self.clients.notify( entity, ServerMsg::TerrainChunkUpdate { @@ -329,6 +329,7 @@ impl Server { if player.view_distance.map(|vd| dist <= vd).unwrap_or(false) { should_drop = false; + break; } } diff --git a/voxygen/src/menu/main/mod.rs b/voxygen/src/menu/main/mod.rs index f59e06f4a3..7d2957dce4 100644 --- a/voxygen/src/menu/main/mod.rs +++ b/voxygen/src/menu/main/mod.rs @@ -106,7 +106,10 @@ impl PlayState for MainMenuState { // Don't try to connect if there is already a connection in progress. client_init = client_init.or(Some(ClientInit::new( (server_address, DEFAULT_PORT, false), - comp::Player::new(username.clone(), Some(10)), + comp::Player::new( + username.clone(), + Some(global_state.settings.graphics.view_distance), + ), false, ))); } diff --git a/voxygen/src/menu/main/start_singleplayer.rs b/voxygen/src/menu/main/start_singleplayer.rs index c3e3446294..a44efca663 100644 --- a/voxygen/src/menu/main/start_singleplayer.rs +++ b/voxygen/src/menu/main/start_singleplayer.rs @@ -30,7 +30,10 @@ impl PlayState for StartSingleplayerState { let client_init = ClientInit::new( (server_address.clone(), self.sock.port(), true), - comp::Player::new(username.clone(), Some(10)), + comp::Player::new( + username.clone(), + Some(global_state.settings.graphics.view_distance), + ), true, );