mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
renamings and using unstable sort according to a code review
This commit is contained in:
parent
637e63fbe2
commit
1b76874342
@ -14,7 +14,7 @@ use vek::Vec2;
|
|||||||
/// send to MULTIPLE clients
|
/// send to MULTIPLE clients
|
||||||
/// TODO: store a urgent flag and seperate even more, 5 ticks vs 5 seconds
|
/// TODO: store a urgent flag and seperate even more, 5 ticks vs 5 seconds
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub struct ChunkSendQueue {
|
pub struct ChunkSendEntry {
|
||||||
pub(crate) entity: Entity,
|
pub(crate) entity: Entity,
|
||||||
pub(crate) chunk_key: Vec2<i32>,
|
pub(crate) chunk_key: Vec2<i32>,
|
||||||
}
|
}
|
||||||
|
@ -218,7 +218,9 @@ impl Client {
|
|||||||
|
|
||||||
pub(crate) fn terrain_params(&self) -> StreamParams { self.terrain_stream_params.clone() }
|
pub(crate) fn terrain_params(&self) -> StreamParams { self.terrain_stream_params.clone() }
|
||||||
|
|
||||||
pub(crate) fn prepare_terrain(
|
/// Only used for Serialize Chunks in a SlowJob.
|
||||||
|
/// TODO: find a more elegant version for this invariant
|
||||||
|
pub(crate) fn prepare_chunk_update_msg(
|
||||||
terrain_chunk_update: ServerGeneral,
|
terrain_chunk_update: ServerGeneral,
|
||||||
params: &StreamParams,
|
params: &StreamParams,
|
||||||
) -> PreparedMsg {
|
) -> PreparedMsg {
|
||||||
|
@ -249,7 +249,7 @@ impl Server {
|
|||||||
state.ecs_mut().insert(Vec::<ChunkRequest>::new());
|
state.ecs_mut().insert(Vec::<ChunkRequest>::new());
|
||||||
state
|
state
|
||||||
.ecs_mut()
|
.ecs_mut()
|
||||||
.insert(EventBus::<chunk_serialize::ChunkSendQueue>::default());
|
.insert(EventBus::<chunk_serialize::ChunkSendEntry>::default());
|
||||||
state.ecs_mut().insert(Locations::default());
|
state.ecs_mut().insert(Locations::default());
|
||||||
state.ecs_mut().insert(LoginProvider::new(
|
state.ecs_mut().insert(LoginProvider::new(
|
||||||
settings.auth_server_address.clone(),
|
settings.auth_server_address.clone(),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
chunk_serialize::{ChunkSendQueue, SerializedChunk},
|
chunk_serialize::{ChunkSendEntry, SerializedChunk},
|
||||||
client::Client,
|
client::Client,
|
||||||
metrics::NetworkRequestMetrics,
|
metrics::NetworkRequestMetrics,
|
||||||
presence::Presence,
|
presence::Presence,
|
||||||
@ -23,7 +23,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
Read<'a, Tick>,
|
Read<'a, Tick>,
|
||||||
ReadStorage<'a, Client>,
|
ReadStorage<'a, Client>,
|
||||||
ReadStorage<'a, Presence>,
|
ReadStorage<'a, Presence>,
|
||||||
ReadExpect<'a, EventBus<ChunkSendQueue>>,
|
ReadExpect<'a, EventBus<ChunkSendEntry>>,
|
||||||
ReadExpect<'a, NetworkRequestMetrics>,
|
ReadExpect<'a, NetworkRequestMetrics>,
|
||||||
ReadExpect<'a, SlowJobPool>,
|
ReadExpect<'a, SlowJobPool>,
|
||||||
ReadExpect<'a, TerrainGrid>,
|
ReadExpect<'a, TerrainGrid>,
|
||||||
@ -119,7 +119,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
let chunk_sender = chunk_sender.clone();
|
let chunk_sender = chunk_sender.clone();
|
||||||
slow_jobs.spawn("CHUNK_SERIALIZER", move || {
|
slow_jobs.spawn("CHUNK_SERIALIZER", move || {
|
||||||
for (chunk, chunk_key, mut meta) in chunks {
|
for (chunk, chunk_key, mut meta) in chunks {
|
||||||
let msg = Client::prepare_terrain(
|
let msg = Client::prepare_chunk_update_msg(
|
||||||
ServerGeneral::TerrainChunkUpdate {
|
ServerGeneral::TerrainChunkUpdate {
|
||||||
key: chunk_key,
|
key: chunk_key,
|
||||||
chunk: Ok(SerializedTerrainChunk::via_heuristic(
|
chunk: Ok(SerializedTerrainChunk::via_heuristic(
|
||||||
@ -129,7 +129,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
},
|
},
|
||||||
&meta.params,
|
&meta.params,
|
||||||
);
|
);
|
||||||
meta.recipients.sort();
|
meta.recipients.sort_unstable();
|
||||||
meta.recipients.dedup();
|
meta.recipients.dedup();
|
||||||
if let Err(e) = chunk_sender.send(SerializedChunk {
|
if let Err(e) = chunk_sender.send(SerializedChunk {
|
||||||
lossy_compression: meta.lossy_compression,
|
lossy_compression: meta.lossy_compression,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
chunk_serialize::ChunkSendQueue, client::Client, lod::Lod, metrics::NetworkRequestMetrics,
|
chunk_serialize::ChunkSendEntry, client::Client, lod::Lod, metrics::NetworkRequestMetrics,
|
||||||
presence::Presence, ChunkRequest,
|
presence::Presence, ChunkRequest,
|
||||||
};
|
};
|
||||||
use common::{
|
use common::{
|
||||||
@ -22,7 +22,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
type SystemData = (
|
type SystemData = (
|
||||||
Entities<'a>,
|
Entities<'a>,
|
||||||
Read<'a, EventBus<ServerEvent>>,
|
Read<'a, EventBus<ServerEvent>>,
|
||||||
ReadExpect<'a, EventBus<ChunkSendQueue>>,
|
ReadExpect<'a, EventBus<ChunkSendEntry>>,
|
||||||
ReadExpect<'a, TerrainGrid>,
|
ReadExpect<'a, TerrainGrid>,
|
||||||
ReadExpect<'a, Lod>,
|
ReadExpect<'a, Lod>,
|
||||||
ReadExpect<'a, NetworkRequestMetrics>,
|
ReadExpect<'a, NetworkRequestMetrics>,
|
||||||
@ -86,7 +86,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
if in_vd {
|
if in_vd {
|
||||||
if terrain.get_key_arc(key).is_some() {
|
if terrain.get_key_arc(key).is_some() {
|
||||||
network_metrics.chunks_served_from_memory.inc();
|
network_metrics.chunks_served_from_memory.inc();
|
||||||
chunk_send_emitter.emit(ChunkSendQueue {
|
chunk_send_emitter.emit(ChunkSendEntry {
|
||||||
chunk_key: key,
|
chunk_key: key,
|
||||||
entity,
|
entity,
|
||||||
});
|
});
|
||||||
|
@ -7,7 +7,7 @@ use world::{IndexOwned, World};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
chunk_generator::ChunkGenerator,
|
chunk_generator::ChunkGenerator,
|
||||||
chunk_serialize::ChunkSendQueue,
|
chunk_serialize::ChunkSendEntry,
|
||||||
client::Client,
|
client::Client,
|
||||||
presence::{Presence, RepositionOnChunkLoad},
|
presence::{Presence, RepositionOnChunkLoad},
|
||||||
rtsim::RtSim,
|
rtsim::RtSim,
|
||||||
@ -63,7 +63,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
ReadExpect<'a, SlowJobPool>,
|
ReadExpect<'a, SlowJobPool>,
|
||||||
ReadExpect<'a, IndexOwned>,
|
ReadExpect<'a, IndexOwned>,
|
||||||
ReadExpect<'a, Arc<World>>,
|
ReadExpect<'a, Arc<World>>,
|
||||||
ReadExpect<'a, EventBus<ChunkSendQueue>>,
|
ReadExpect<'a, EventBus<ChunkSendEntry>>,
|
||||||
WriteExpect<'a, ChunkGenerator>,
|
WriteExpect<'a, ChunkGenerator>,
|
||||||
WriteExpect<'a, TerrainGrid>,
|
WriteExpect<'a, TerrainGrid>,
|
||||||
Write<'a, TerrainChanges>,
|
Write<'a, TerrainChanges>,
|
||||||
@ -268,7 +268,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
.magnitude_squared();
|
.magnitude_squared();
|
||||||
|
|
||||||
if adjusted_dist_sqr <= presence.view_distance.pow(2) {
|
if adjusted_dist_sqr <= presence.view_distance.pow(2) {
|
||||||
chunk_send_emitter.emit(ChunkSendQueue {
|
chunk_send_emitter.emit(ChunkSendEntry {
|
||||||
entity,
|
entity,
|
||||||
chunk_key: key,
|
chunk_key: key,
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use crate::{chunk_serialize::ChunkSendQueue, client::Client, presence::Presence};
|
use crate::{chunk_serialize::ChunkSendEntry, client::Client, presence::Presence};
|
||||||
use common::{comp::Pos, event::EventBus, terrain::TerrainGrid};
|
use common::{comp::Pos, event::EventBus, terrain::TerrainGrid};
|
||||||
use common_ecs::{Job, Origin, Phase, System};
|
use common_ecs::{Job, Origin, Phase, System};
|
||||||
use common_net::msg::{CompressedData, ServerGeneral};
|
use common_net::msg::{CompressedData, ServerGeneral};
|
||||||
@ -14,7 +14,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
Entities<'a>,
|
Entities<'a>,
|
||||||
ReadExpect<'a, TerrainGrid>,
|
ReadExpect<'a, TerrainGrid>,
|
||||||
Read<'a, TerrainChanges>,
|
Read<'a, TerrainChanges>,
|
||||||
ReadExpect<'a, EventBus<ChunkSendQueue>>,
|
ReadExpect<'a, EventBus<ChunkSendEntry>>,
|
||||||
ReadStorage<'a, Pos>,
|
ReadStorage<'a, Pos>,
|
||||||
ReadStorage<'a, Presence>,
|
ReadStorage<'a, Presence>,
|
||||||
ReadStorage<'a, Client>,
|
ReadStorage<'a, Client>,
|
||||||
@ -35,7 +35,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
for (entity, presence, pos) in (&entities, &presences, &positions).join() {
|
for (entity, presence, pos) in (&entities, &presences, &positions).join() {
|
||||||
if super::terrain::chunk_in_vd(pos.0, *chunk_key, &terrain, presence.view_distance)
|
if super::terrain::chunk_in_vd(pos.0, *chunk_key, &terrain, presence.view_distance)
|
||||||
{
|
{
|
||||||
chunk_send_emitter.emit(ChunkSendQueue {
|
chunk_send_emitter.emit(ChunkSendEntry {
|
||||||
entity,
|
entity,
|
||||||
chunk_key: *chunk_key,
|
chunk_key: *chunk_key,
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user