dis_rs/common/entity_state_update/
writer.rs

1use 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}