honeycomb_render/inspector/
tab.rs1use bevy::prelude::*;
2use bevy::utils::HashSet;
3use bevy_egui::egui;
4
5use crate::capture::ecs_data::{DartBody, DartId, EdgeId, FaceId, VertexId};
6use crate::components::{Beta, Edge, Face, Vertex, Volume};
7
8pub fn draw_inspected_data(
10 ui: &mut egui::Ui,
11 world: &mut World,
12 selected_entities: &HashSet<Entity>,
13) {
14 ui.label(egui::RichText::new("Selected Components").size(15.));
15
16 if selected_entities.is_empty() {
17 ui.separator();
18 }
19
20 for entity in selected_entities {
21 ui.separator();
22 if world.get::<DartBody>(*entity).is_some() {
23 let Some(id) = world.get::<DartId>(*entity) else {
24 unreachable!()
25 };
26 ui.label(format!("Dart #{}", id.0));
27 let Some(vid) = world.get::<VertexId>(*entity) else {
28 unreachable!();
29 };
30 let Some(eid) = world.get::<EdgeId>(*entity) else {
31 unreachable!();
32 };
33 let Some(fid) = world.get::<FaceId>(*entity) else {
34 unreachable!();
35 };
36 egui::Grid::new(format!("dart #{}", id.0)) .num_columns(4)
38 .show(ui, |ui| {
39 ui.label("i-cells");
40 ui.label("Vertex");
41 ui.label("Edge");
42 ui.label("Face");
43 ui.end_row();
44 ui.label("IDs");
45 ui.label(format!("{}", vid.0));
46 ui.label(format!("{}", eid.0));
47 ui.label(format!("{}", fid.0));
48 });
49 } else if world.get::<Beta>(*entity).is_some() {
50 ui.label("Beta");
51 } else if world.get::<Vertex>(*entity).is_some() {
52 let Some(id) = world.get::<VertexId>(*entity) else {
53 unreachable!()
54 };
55 ui.label(format!("Vertex #{}", id.0));
56 } else if world.get::<Edge>(*entity).is_some() {
57 let Some(id) = world.get::<EdgeId>(*entity) else {
58 unreachable!()
59 };
60 ui.label(format!("Edge #{}", id.0));
61 } else if world.get::<Face>(*entity).is_some() {
62 ui.label("Face");
63 } else if world.get::<Volume>(*entity).is_some() {
64 ui.label("Volume");
65 }
66 }
67}