dis_rs/common/collision_elastic/
writer.rs

1use crate::common::collision_elastic::model::CollisionElastic;
2use crate::common::{Serialize, SerializePdu, SupportedVersion};
3use bytes::{BufMut, BytesMut};
4
5impl SerializePdu for CollisionElastic {
6    fn serialize_pdu(&self, _version: SupportedVersion, buf: &mut BytesMut) -> u16 {
7        let issuing_id_bytes = self.issuing_entity_id.serialize(buf);
8        let colliding_id_bytes = self.colliding_entity_id.serialize(buf);
9        let event_id_bytes = self.event_id.serialize(buf);
10        buf.put_u16(0u16);
11        let velocity_bytes = self.velocity.serialize(buf);
12        buf.put_f32(self.mass);
13        let location_bytes = self.location.serialize(buf);
14        buf.put_f32(self.intermediate_result_xx);
15        buf.put_f32(self.intermediate_result_xy);
16        buf.put_f32(self.intermediate_result_xz);
17        buf.put_f32(self.intermediate_result_yy);
18        buf.put_f32(self.intermediate_result_yz);
19        buf.put_f32(self.intermediate_result_zz);
20        let unit_surface_normal_bytes = self.unit_surface_normal.serialize(buf);
21        buf.put_f32(self.coefficient_of_restitution);
22
23        issuing_id_bytes
24            + colliding_id_bytes
25            + event_id_bytes
26            + 2
27            + velocity_bytes
28            + 4
29            + location_bytes
30            + (6 * 4)
31            + unit_surface_normal_bytes
32            + 4
33    }
34}