dis_rs/common/entity_state_update/
writer.rs1use crate::common::entity_state_update::model::EntityStateUpdate;
2use crate::common::{Serialize, SerializePdu, SupportedVersion};
3use bytes::{BufMut, BytesMut};
4
5impl SerializePdu for EntityStateUpdate {
6 fn serialize_pdu(&self, _version: SupportedVersion, buf: &mut BytesMut) -> u16 {
7 let entity_id_bytes = self.entity_id.serialize(buf);
8 buf.put_u8(0u8);
9 buf.put_u8(self.variable_parameters.len() as u8);
10 let linear_velocity_bytes = self.entity_linear_velocity.serialize(buf);
11 let location_bytes = self.entity_location.serialize(buf);
12 let orientation_bytes = self.entity_orientation.serialize(buf);
13 let appearance_bytes = self.entity_appearance.serialize(buf);
14 let variable_params_bytes: u16 = self
15 .variable_parameters
16 .iter()
17 .map(|param| param.serialize(buf))
18 .sum();
19
20 entity_id_bytes
21 + 2
22 + linear_velocity_bytes
23 + location_bytes
24 + orientation_bytes
25 + appearance_bytes
26 + variable_params_bytes
27 }
28}