hotham_debug_server/
debug_frame.rs1use approx::relative_eq;
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct DebugFrame {
8 pub id: Uuid,
9 pub frame_number: u64,
10 pub session_id: Uuid,
11 pub entities: Vec<DebugEntity>,
12}
13
14#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct DebugEntity {
17 pub name: String,
18 pub id: String,
19 pub entity_id: u64,
20 pub transform: Option<DebugTransform>,
21 pub collider: Option<DebugCollider>,
22}
23
24#[derive(Default, Debug, Clone, Serialize, Deserialize)]
25#[serde(rename_all = "camelCase")]
26pub struct DebugTransform {
27 pub translation: [f32; 3],
28 pub rotation: [f32; 4],
29 pub scale: [f32; 3],
30}
31
32impl PartialEq for DebugTransform {
33 fn eq(&self, other: &Self) -> bool {
34 relative_eq!(self.translation[0], other.translation[0])
35 && relative_eq!(self.translation[1], other.translation[1])
36 && relative_eq!(self.translation[2], other.translation[2])
37 && relative_eq!(self.scale[0], other.scale[0])
38 && relative_eq!(self.scale[1], other.scale[1])
39 && relative_eq!(self.scale[2], other.scale[2])
40 && relative_eq!(self.rotation[0], other.rotation[0])
41 && relative_eq!(self.rotation[1], other.rotation[1])
42 && relative_eq!(self.rotation[2], other.rotation[2])
43 }
44}
45
46#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq)]
47#[serde(rename_all = "camelCase")]
48pub struct DebugCollider {
49 pub collider_type: String,
50 pub geometry: Vec<f32>,
51 pub translation: [f32; 3],
52 pub rotation: [f32; 4],
53}
54
55