Also apply changes to outbound model when we get initial chunk state from host.

This commit is contained in:
IQuant 2024-09-22 18:15:11 +03:00
parent a0fb23c9a0
commit 49076fa0a8
2 changed files with 8 additions and 7 deletions

View file

@ -432,7 +432,7 @@ impl WorldManager {
if env::var_os("NP_WORLD_SYNC_TEST").is_some() && self.current_update % 10 == 0 {
let chunk_data = ChunkData::make_random();
self.inbound_model
.apply_chunk_data(ChunkCoord(0, 0), chunk_data)
.apply_chunk_data(ChunkCoord(0, 0), &chunk_data)
}
let updates = self.inbound_model.get_all_noita_updates();
self.inbound_model.reset_change_tracking();
@ -590,7 +590,8 @@ impl WorldManager {
} => {
if self.chunk_state.get(&chunk) != Some(&ChunkState::UnloadPending) {
if let Some(chunk_data) = chunk_data {
self.inbound_model.apply_chunk_data(chunk, chunk_data);
self.inbound_model.apply_chunk_data(chunk, &chunk_data);
self.outbound_model.apply_chunk_data(chunk, &chunk_data);
}
self.chunk_state
.insert(chunk, ChunkState::authority(priority));
@ -608,7 +609,7 @@ impl WorldManager {
);
}
}
WorldNetMessage::UpdateStorage {chunk, chunk_data} => {
WorldNetMessage::UpdateStorage { chunk, chunk_data } => {
if !self.is_host {
warn!("{} sent RelinquishAuthority to not-host.", source);
return;
@ -690,7 +691,7 @@ impl WorldManager {
},
);
if let Some(chunk_data) = chunk_data {
self.inbound_model.apply_chunk_data(chunk, chunk_data);
self.inbound_model.apply_chunk_data(chunk, &chunk_data);
} else {
warn!("Initial listen response has None chunk_data. It's generally supposed to have some.");
}
@ -809,7 +810,7 @@ impl WorldManager {
} => {
info!("Transfer ok");
if let Some(chunk_data) = chunk_data {
self.inbound_model.apply_chunk_data(chunk, chunk_data);
self.inbound_model.apply_chunk_data(chunk, &chunk_data);
}
for listener in listeners.iter() {
self.emit_msg(
@ -919,4 +920,4 @@ impl Drop for WorldManager {
impl SaveStateEntry for FxHashMap<ChunkCoord, ChunkData> {
const FILENAME: &'static str = "world_chunks";
}
}

View file

@ -185,7 +185,7 @@ impl WorldModel {
info!("World model reset");
}
pub(crate) fn apply_chunk_data(&mut self, chunk: ChunkCoord, chunk_data: ChunkData) {
pub(crate) fn apply_chunk_data(&mut self, chunk: ChunkCoord, chunk_data: &ChunkData) {
self.updated_chunks.insert(chunk);
let chunk = self.chunks.entry(chunk).or_default();
let mut offset = 0;