1use bevy_math::{Quat, Vec3};
2
3use crate::{buffer::Buffer, packet::Packet};
4
5#[derive(Debug, Clone)]
6pub struct UpdateClientsPositions{
7 pub players: Vec<(String, Vec3, Quat)>,
8}
9
10impl Packet for UpdateClientsPositions{
11 fn to_buf(self) -> Buffer {
12 let mut buf = Buffer::empty();
13 buf.set_u16(6);
14 buf.set_u32(self.players.len() as u32);
15
16 for ( id, pos, rot ) in &self.players{
17 buf.set_str(id.clone());
18 buf.set_vec3(*pos);
19 buf.set_quat(*rot);
20 }
21
22 buf
23 }
24
25 fn from_buf(buf: &mut Buffer) -> Self {
26 let mut players = vec![];
27
28 for _ in 0..buf.get_u32(){
29 players.push((
30 buf.get_str(),
31 buf.get_vec3(),
32 buf.get_quat()
33 ));
34 }
35
36 Self { players }
37 }
38}