honeycomb_render/capture/
ecs_data.rs1use bevy::prelude::*;
2use bevy::utils::HashMap;
3use honeycomb_core::cmap::{DartIdType, EdgeIdType, FaceIdType, VertexIdType, VolumeIdType};
4
5#[derive(Resource)]
9pub struct MapVertices(pub Vec<Vec3>);
10
11#[derive(Resource)]
13pub struct FaceNormals(pub HashMap<FaceIdType, Vec<Vec3>>);
14
15#[derive(Bundle, Clone)]
19pub struct DartHeadBundle {
20 pub(crate) capture_id: CaptureId,
21 id: DartId,
22 vertex_id: VertexId,
23 edge_id: EdgeId,
24 pub(crate) face_id: FaceId,
25 pub(crate) dart_head: DartHead,
26}
27
28impl DartHeadBundle {
29 #[must_use = "Object unused after construction"]
31 pub fn new(
32 capture_id: usize,
33 id: DartIdType,
34 vertex_id: VertexIdType,
35 edge_id: EdgeIdType,
36 face_id: FaceIdType,
37 vertices: (usize, usize),
38 normals: (usize, usize),
39 ) -> Self {
40 Self {
41 capture_id: CaptureId(capture_id),
42 id: DartId(id),
43 vertex_id: VertexId(vertex_id),
44 edge_id: EdgeId(edge_id),
45 face_id: FaceId(face_id),
46 dart_head: DartHead { vertices, normals },
47 }
48 }
49}
50
51#[derive(Bundle, Clone)]
53pub struct DartBodyBundle {
54 pub(crate) capture_id: CaptureId,
55 id: DartId,
56 vertex_id: VertexId,
57 edge_id: EdgeId,
58 pub(crate) face_id: FaceId,
59 pub(crate) dart_body: DartBody,
60}
61
62impl DartBodyBundle {
63 #[must_use = "Object unused after construction"]
65 pub fn new(
66 capture_id: usize,
67 id: DartIdType,
68 vertex_id: VertexIdType,
69 edge_id: EdgeIdType,
70 face_id: FaceIdType,
71 vertices: (usize, usize),
72 normals: (usize, usize),
73 ) -> Self {
74 Self {
75 capture_id: CaptureId(capture_id),
76 id: DartId(id),
77 vertex_id: VertexId(vertex_id),
78 edge_id: EdgeId(edge_id),
79 face_id: FaceId(face_id),
80 dart_body: DartBody { vertices, normals },
81 }
82 }
83}
84
85#[derive(Bundle, Clone)]
87pub struct VertexBundle {
88 pub(crate) capture_id: CaptureId,
89 id: VertexId,
90 pub(crate) vertex: Vertex,
91}
92
93impl VertexBundle {
94 #[must_use = "Object unused after construction"]
96 pub fn new(capture_id: usize, id: VertexIdType, vertex: usize) -> Self {
97 Self {
98 capture_id: CaptureId(capture_id),
99 id: VertexId(id),
100 vertex: Vertex(vertex),
101 }
102 }
103}
104
105#[derive(Bundle, Clone)]
107pub struct EdgeBundle {
108 pub(crate) capture_id: CaptureId,
109 id: EdgeId,
110 pub(crate) edge: Edge,
111}
112
113impl EdgeBundle {
114 #[must_use = "Object unused after construction"]
116 pub fn new(capture_id: usize, id: EdgeIdType, vertices: (usize, usize)) -> Self {
117 Self {
118 capture_id: CaptureId(capture_id),
119 id: EdgeId(id),
120 edge: Edge(vertices.0, vertices.1),
121 }
122 }
123}
124
125#[derive(Bundle, Clone)]
127pub struct FaceBundle {
128 pub(crate) capture_id: CaptureId,
129 pub(crate) id: FaceId,
130 pub(crate) face: Face,
131}
132
133impl FaceBundle {
134 #[must_use = "Object unused after construction"]
136 pub fn new(capture_id: usize, id: FaceIdType, vertices: Vec<usize>) -> Self {
137 Self {
138 capture_id: CaptureId(capture_id),
139 id: FaceId(id),
140 face: Face(vertices),
141 }
142 }
143}
144
145#[derive(Component, Clone, PartialEq, Eq)]
149pub struct CaptureId(pub usize);
150
151#[derive(Component, Clone)]
153pub struct DartId(pub DartIdType);
154
155#[derive(Component, Clone)]
157pub struct VertexId(pub VertexIdType);
158
159#[derive(Component, Clone)]
161pub struct EdgeId(pub EdgeIdType);
162
163#[derive(Component, Clone)]
165pub struct FaceId(pub FaceIdType);
166
167#[derive(Component, Clone)]
169pub struct VolumeId(pub VolumeIdType);
170
171#[derive(Component, Clone)]
173pub struct DartHead {
174 pub(crate) vertices: (usize, usize), pub(crate) normals: (usize, usize), }
177
178#[derive(Component, Clone)]
180pub struct DartBody {
181 pub(crate) vertices: (usize, usize), pub(crate) normals: (usize, usize), }
184
185#[derive(Component, Clone)]
187pub struct Beta(pub u8, pub usize, pub usize); #[derive(Component, Clone)]
191pub struct Vertex(pub usize); #[derive(Component, Clone)]
195pub struct Edge(pub usize, pub usize); #[derive(Component, Clone)]
199pub struct Face(pub Vec<usize>); #[derive(Component, Clone)]
203pub struct Volume;