mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
fmt
This commit is contained in:
parent
586b62ea28
commit
489f5f6b2a
@ -5,7 +5,7 @@ use crate::{
|
||||
comp,
|
||||
msg::{EcsCompPacket, EcsResPacket},
|
||||
sys,
|
||||
terrain::{TerrainChunk, TerrainMap, Block},
|
||||
terrain::{Block, TerrainChunk, TerrainMap},
|
||||
vol::WriteVol,
|
||||
};
|
||||
use rayon::{ThreadPool, ThreadPoolBuilder};
|
||||
@ -17,7 +17,7 @@ use specs::{
|
||||
};
|
||||
use sphynx;
|
||||
use std::{
|
||||
collections::{HashSet, HashMap},
|
||||
collections::{HashMap, HashSet},
|
||||
sync::Arc,
|
||||
time::Duration,
|
||||
};
|
||||
@ -255,11 +255,13 @@ impl State {
|
||||
{
|
||||
self.ecs
|
||||
.write_resource::<ChunkChanges>()
|
||||
.modified_chunks.insert(key);
|
||||
.modified_chunks
|
||||
.insert(key);
|
||||
} else {
|
||||
self.ecs
|
||||
.write_resource::<ChunkChanges>()
|
||||
.new_chunks.insert(key);
|
||||
.new_chunks
|
||||
.insert(key);
|
||||
}
|
||||
}
|
||||
|
||||
@ -273,7 +275,8 @@ impl State {
|
||||
{
|
||||
self.ecs
|
||||
.write_resource::<ChunkChanges>()
|
||||
.removed_chunks.insert(key);
|
||||
.removed_chunks
|
||||
.insert(key);
|
||||
}
|
||||
}
|
||||
|
||||
@ -303,21 +306,19 @@ impl State {
|
||||
.write_resource::<TerrainChange>()
|
||||
.blocks
|
||||
.drain()
|
||||
.for_each(|(pos, block)| if terrain.set(pos, block).is_ok() {
|
||||
chunk_changes.modified_chunks.insert(terrain.pos_key(pos));
|
||||
} else {
|
||||
warn!("Tried to modify block outside of terrain at {:?}", pos);
|
||||
.for_each(|(pos, block)| {
|
||||
if terrain.set(pos, block).is_ok() {
|
||||
chunk_changes.modified_chunks.insert(terrain.pos_key(pos));
|
||||
} else {
|
||||
warn!("Tried to modify block outside of terrain at {:?}", pos);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// Clean up the state after a tick.
|
||||
pub fn cleanup(&mut self) {
|
||||
// Clean up data structures from the last tick.
|
||||
self.ecs
|
||||
.write_resource::<TerrainChange>()
|
||||
.clear();
|
||||
self.ecs
|
||||
.write_resource::<ChunkChanges>()
|
||||
.clear();
|
||||
self.ecs.write_resource::<TerrainChange>().clear();
|
||||
self.ecs.write_resource::<ChunkChanges>().clear();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
use super::{block::Block, TerrainChunkMeta, TerrainChunkSize};
|
||||
use crate::{
|
||||
vol::{BaseVol, ReadVol, WriteVol, VolSize},
|
||||
vol::{BaseVol, ReadVol, VolSize, WriteVol},
|
||||
volumes::chunk::{Chunk, ChunkErr},
|
||||
};
|
||||
use fxhash::FxHashMap;
|
||||
@ -188,7 +188,7 @@ impl WriteVol for Chonk {
|
||||
SubChunk::Hash(cblock, map) if block == *cblock => {
|
||||
map.remove(&rpos.map(|e| e as u8));
|
||||
Ok(())
|
||||
},
|
||||
}
|
||||
SubChunk::Hash(_cblock, map) if map.len() <= 4096 => {
|
||||
map.insert(rpos.map(|e| e as u8), block);
|
||||
Ok(())
|
||||
|
@ -7,7 +7,7 @@ use common::{
|
||||
comp,
|
||||
msg::ServerMsg,
|
||||
npc::{get_npc_name, NpcKind},
|
||||
state::{TimeOfDay, TerrainChange},
|
||||
state::{TerrainChange, TimeOfDay},
|
||||
terrain::Block,
|
||||
vol::Vox,
|
||||
};
|
||||
@ -254,10 +254,9 @@ fn handle_tp(server: &mut Server, entity: EcsEntity, args: String, action: &Chat
|
||||
}
|
||||
},
|
||||
None => {
|
||||
server.clients.notify(
|
||||
entity,
|
||||
ServerMsg::Chat(format!("You have no position!")),
|
||||
);
|
||||
server
|
||||
.clients
|
||||
.notify(entity, ServerMsg::Chat(format!("You have no position!")));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -332,10 +331,7 @@ fn handle_players(server: &mut Server, entity: EcsEntity, _args: String, _action
|
||||
fn handle_solid(server: &mut Server, entity: EcsEntity, args: String, action: &ChatCommand) {
|
||||
match server.state.read_component_cloned::<comp::Pos>(entity) {
|
||||
Some(current_pos) => {
|
||||
let mut terrain_change = server
|
||||
.state
|
||||
.ecs()
|
||||
.write_resource::<TerrainChange>();
|
||||
let mut terrain_change = server.state.ecs().write_resource::<TerrainChange>();
|
||||
|
||||
for i in -1..2 {
|
||||
for j in -1..2 {
|
||||
@ -358,10 +354,7 @@ fn handle_solid(server: &mut Server, entity: EcsEntity, args: String, action: &C
|
||||
fn handle_empty(server: &mut Server, entity: EcsEntity, args: String, action: &ChatCommand) {
|
||||
match server.state.read_component_cloned::<comp::Pos>(entity) {
|
||||
Some(current_pos) => {
|
||||
let mut terrain_change = server
|
||||
.state
|
||||
.ecs()
|
||||
.write_resource::<TerrainChange>();
|
||||
let mut terrain_change = server.state.ecs().write_resource::<TerrainChange>();
|
||||
|
||||
for i in -1..2 {
|
||||
for j in -1..2 {
|
||||
|
@ -17,7 +17,7 @@ use common::{
|
||||
msg::{ClientMsg, ClientState, RequestStateError, ServerInfo, ServerMsg},
|
||||
net::PostOffice,
|
||||
state::{State, Uid},
|
||||
terrain::{TerrainChunk, TerrainMap, TerrainChunkSize},
|
||||
terrain::{TerrainChunk, TerrainChunkSize, TerrainMap},
|
||||
vol::VolSize,
|
||||
};
|
||||
use log::{debug, warn};
|
||||
@ -246,7 +246,12 @@ impl Server {
|
||||
self.pending_chunks.remove(&key);
|
||||
}
|
||||
|
||||
fn chunk_in_vd(player_pos: Vec3<f32>, chunk_pos: Vec2<i32>, terrain: &TerrainMap, vd: u32) -> bool {
|
||||
fn chunk_in_vd(
|
||||
player_pos: Vec3<f32>,
|
||||
chunk_pos: Vec2<i32>,
|
||||
terrain: &TerrainMap,
|
||||
vd: u32,
|
||||
) -> bool {
|
||||
let player_chunk_pos = terrain.pos_key(player_pos.map(|e| e as i32));
|
||||
|
||||
let adjusted_dist_sqr = Vec2::from(player_chunk_pos - chunk_pos)
|
||||
|
@ -94,12 +94,14 @@ impl Terrain {
|
||||
.modified_chunks
|
||||
.iter()
|
||||
.map(|c| (true, c))
|
||||
.chain(client
|
||||
.state()
|
||||
.chunk_changes()
|
||||
.new_chunks
|
||||
.iter()
|
||||
.map(|c| (false, c)))
|
||||
.chain(
|
||||
client
|
||||
.state()
|
||||
.chunk_changes()
|
||||
.new_chunks
|
||||
.iter()
|
||||
.map(|c| (false, c)),
|
||||
)
|
||||
{
|
||||
// TODO: ANOTHER PROBLEM HERE!
|
||||
// What happens if the block on the edge of a chunk gets modified? We need to spawn
|
||||
@ -122,11 +124,14 @@ impl Terrain {
|
||||
}
|
||||
|
||||
if neighbours {
|
||||
self.mesh_todo.insert(pos, ChunkMeshState {
|
||||
self.mesh_todo.insert(
|
||||
pos,
|
||||
started_tick: current_tick,
|
||||
active_worker: false,
|
||||
});
|
||||
ChunkMeshState {
|
||||
pos,
|
||||
started_tick: current_tick,
|
||||
active_worker: false,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user