@@ 8,5 8,5 @@ use crate::client::net::incoming_planets::handle_incoming_planets;
pub fn net_plugin(app: &mut App) {
app
.insert_resource(ServerEntityMap::default())
- .add_systems(PreUpdate, (handle_incoming_planets, handle_incoming_parts));
+ .add_systems(PostUpdate, (handle_incoming_planets, handle_incoming_parts));
}=
\ No newline at end of file
@@ 9,7 9,7 @@ use crate::shared::net::{SendTargets, ToClients};
use crate::shared::net::part::PartDto;
pub fn send_updated_planets(
- planets: Query<(Entity, Ref<Planet>, Ref<Transform>, Ref<Temperature>)>,
+ planets: Query<(Entity, Ref<Planet>, Ref<Transform>)>,
mut messages: MessageWriter<ToClients<PlanetDto>>
) {
for planet in planets {
@@ 21,7 21,6 @@ use postcard::{from_bytes, to_allocvec, to_slice, to_vec};
use crate::prelude::{App, Message};
use crate::shared::thrust::ThrustSolution;
use serde::{Deserialize, Serialize};
-use smolvec::SmolVec;
use crate::shared::attachment::{Joint, JointOf, PartInShip, Peer, Ship, SnapOf, SnapOfJoint};
use crate::shared::config::planet::{Planet, PlanetSpring, PlanetSpringJoint};
use crate::shared::ecs::{CanCraft, CraftPartRequest, DragRequestEvent, Drill, Part, Player, PlayerStorage, SingleStorage, Temperature, ToggleDrillEvent};
@@ 162,7 161,10 @@ fn register_mapped_server_message<T: Message + MapEntities + TypePath + for<'a>
registry.forward.insert(TypeId::of::<T>(), lane_index);
registry.reverse.insert(lane_index, |payload: Vec<u8>, world: &mut World| {
let mut entity_map = world.resource_mut::<ServerEntityMap>();
- let mut message = from_bytes::<T>(&payload).expect(&format!("Failed to deserialize message of type {}", T::type_path()));
+ let Ok(mut message) = from_bytes::<T>(&payload) else {
+ warn!("Failed to deserialize message of type {}", T::type_path());
+ return;
+ };
message.map_entities(&mut entity_map.server_to_client);
world.write_message(message).expect("Could not send message to game");
});
@@ 171,7 173,10 @@ fn register_server_message<T: Message + TypePath + for<'a> Deserialize<'a>>(regi
let lane_index = get_lane_index();
registry.forward.insert(TypeId::of::<T>(), lane_index);
registry.reverse.insert(lane_index, |payload: Vec<u8>, world: &mut World| {
- let message = from_bytes::<T>(&payload).expect(&format!("Failed to deserialize message of type {}", T::type_path()));
+ let Ok(message) = from_bytes::<T>(&payload) else {
+ warn!("Failed to deserialize message of type {}", T::type_path());
+ return;
+ };
world.write_message(message).expect("Could not send message to game");
});
}
@@ 179,7 184,10 @@ fn register_client_message<T: Message + TypePath + for<'a> Deserialize<'a>>(regi
let lane_index = get_lane_index();
registry.forward.insert(TypeId::of::<T>(), lane_index);
registry.reverse.insert(lane_index, |payload: Vec<u8>, client_id: ClientId, world: &mut World| {
- let message = from_bytes::<T>(&payload).expect(&format!("Failed to deserialize message of type {}", T::type_path()));
+ let Ok(message) = from_bytes::<T>(&payload) else {
+ warn!("Failed to deserialize message of type {}", T::type_path());
+ return;
+ };
world.write_message(FromClients {
client_id,
message,
@@ 262,7 270,7 @@ fn recv_from_server(
Res<ServerMessageRegistry>,
)> = SystemState::new(world);
let (mut sessions, message_registry) = system_state.get_mut(world);
- let mut messages = SmolVec::new();
+ let mut messages = Vec::new();
for mut transport in sessions.iter_mut() {
for message in transport.recv.msgs.drain() {
let payload = message.payload;
@@ 285,7 293,7 @@ fn recv_from_client(
Res<ClientMessageRegistry>,
)> = SystemState::new(world);
let (mut clients, message_registry) = system_state.get_mut(world);
- let mut messages = SmolVec::new();
+ let mut messages = Vec::new();
for (client_entity, mut transport) in clients.iter_mut() {
for message in transport.recv.msgs.drain() {
let payload = message.payload;