dis_rs/common/collision_elastic/
writer.rs1use 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}