naia_shared/world/entity/
entity_message_receiver.rs1use std::{fmt::Debug, hash::Hash};
2
3use crate::{
4 messages::channels::receivers::reliable_receiver::ReliableReceiver,
5 world::sync::{HostEngine, RemoteEngine},
6 EntityMessage, HostEntity, MessageIndex,
7};
8
9pub struct EntityMessageReceiver;
11
12impl EntityMessageReceiver {
13 pub fn buffer_message<E: Copy + Hash + Eq + Debug>(
15 receiver: &mut ReliableReceiver<EntityMessage<E>>,
16 message_index: MessageIndex,
17 message: EntityMessage<E>,
18 ) {
19 receiver.buffer_message(message_index, message);
20 }
21
22 pub fn remote_take_incoming_messages<E: Copy + Hash + Eq + Debug>(
27 remote_engine: &mut RemoteEngine<E>,
28 incoming_messages: Vec<(MessageIndex, EntityMessage<E>)>,
29 ) -> Vec<EntityMessage<E>> {
30 for (message_index, message) in incoming_messages {
31 remote_engine.receive_message(message_index, message);
32 }
33 remote_engine.take_incoming_events()
34 }
35
36 pub fn host_take_incoming_events(
39 host_engine: &mut HostEngine,
40 incoming_messages: Vec<(MessageIndex, EntityMessage<HostEntity>)>,
41 ) -> Vec<EntityMessage<HostEntity>> {
42 for (message_index, message) in incoming_messages {
43 host_engine.receive_message(message_index, message);
44 }
45 host_engine.take_incoming_events()
46 }
47}