Skip to content

Commit 0318bb7

Browse files
Implement serverside ChunkRequest event
1 parent 351bd98 commit 0318bb7

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub enum NetworkingMessage {
1616
PlayerLeave(ClientId),
1717
PlayerUpdate(PlayerState),
1818
PlayerSync(HashMap<ClientId, PlayerState>),
19+
ChunkRequest { position: Vec3, client_id: ClientId },
1920
BlockUpdate { position: Vec3, block: BlockId },
2021
}
2122

src/server/networking/systems.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pub fn receive_message_system(
44
mut server: ResMut<RenetServer>,
55
mut player_states: ResMut<player_resources::PlayerStates>,
66
mut past_block_updates: ResMut<terrain_resources::PastBlockUpdates>,
7+
mut chunk_manager: ResMut<terrain_resources::ChunkManager>,
78
) {
89
for client_id in server.clients_id() {
910
let message_bytes = server.receive_message(client_id, DefaultChannel::ReliableUnordered);
@@ -31,6 +32,34 @@ pub fn receive_message_system(
3132
);
3233
player_states.players.insert(client_id, player);
3334
}
35+
lib::NetworkingMessage::ChunkRequest {
36+
position,
37+
client_id,
38+
} => {
39+
info!(
40+
"Received chunk request at {} from client {}",
41+
position, client_id
42+
);
43+
44+
let chunk = chunk_manager.get_chunk(position);
45+
46+
match chunk {
47+
Some(chunk) => {
48+
let message = bincode::serialize(chunk).unwrap();
49+
server.send_message(client_id, DefaultChannel::ReliableUnordered, message);
50+
}
51+
None => {
52+
let mut chunk = terrain_util::Chunk::new(position);
53+
54+
let generator = terrain_util::generator::Generator::new(0);
55+
56+
generator.generate_chunk(&mut chunk);
57+
58+
let message = bincode::serialize(&chunk).unwrap();
59+
server.send_message(client_id, DefaultChannel::ReliableUnordered, message);
60+
}
61+
}
62+
}
3463
_ => {
3564
warn!("Received unknown message type. (ReliableUnordered)");
3665
}

0 commit comments

Comments
 (0)