honeycomb_render/options/
tab.rs1use bevy::prelude::*;
2use bevy_mod_picking::picking_core::PickingPluginsSettings;
3use bevy_mod_picking::selection::SelectionPluginSettings;
4use egui_dock::egui;
5
6use crate::resources::{
7 BetaRenderColor, BetaWidth, DartHeadMul, DartRenderColor, DartShrink, DartWidth,
8 EdgeRenderColor, EdgeWidth, FaceRenderColor, FaceShrink, VertexRenderColor, VertexWidth,
9 VolumeRenderColor, VolumeShrink,
10};
11
12pub fn draw_options(ui: &mut egui::Ui, world: &mut World) {
16 draw_map_options(ui, world);
17
18 ui.separator(); draw_picking_options(ui, world);
21}
22
23macro_rules! opt_rendercol {
26 ($ui: ident, $world: ident, $param: ident) => {{
27 let mut rendercol = $world.resource_mut::<$param>();
28 $ui.checkbox(&mut rendercol.0, "");
29 $ui.add_enabled_ui(rendercol.0, |ui| draw_color_picker(ui, &mut rendercol.1));
30 }};
31}
32
33macro_rules! opt_dragvalue {
34 ($ui: ident, $world: ident, $param: ident) => {{
35 let mut val = $world.resource_mut::<$param>();
36 $ui.add(egui::DragValue::new(&mut val.0).speed(0.01));
37 }};
38}
39
40fn draw_map_options(ui: &mut egui::Ui, world: &mut World) {
41 ui.label(egui::RichText::new("Map Rendering").size(15.));
42 ui.separator(); egui::Grid::new("map_opt_grid")
45 .num_columns(6)
46 .show(ui, |ui| {
47 ui.label(egui::RichText::new("Object"));
49 ui.label(egui::RichText::new("Render"));
50 ui.label(egui::RichText::new("Color"));
51 ui.label(egui::RichText::new("Shrink"));
52 ui.label(egui::RichText::new("Width"));
53 ui.label(egui::RichText::new("Head Factor"));
54 ui.end_row();
55 ui.label("Darts");
57 opt_rendercol!(ui, world, DartRenderColor);
58 opt_dragvalue!(ui, world, DartShrink);
59 opt_dragvalue!(ui, world, DartWidth);
60 opt_dragvalue!(ui, world, DartHeadMul);
61 ui.end_row();
62 ui.label("Beta Functions");
64 opt_rendercol!(ui, world, BetaRenderColor);
65 ui.label("");
66 opt_dragvalue!(ui, world, BetaWidth);
67 ui.end_row();
68 ui.label("Vertices");
70 opt_rendercol!(ui, world, VertexRenderColor);
71 ui.label("");
72 opt_dragvalue!(ui, world, VertexWidth);
73 ui.end_row();
74 ui.label("Edges");
76 opt_rendercol!(ui, world, EdgeRenderColor);
77 ui.label("");
78 opt_dragvalue!(ui, world, EdgeWidth);
79 ui.end_row();
80 ui.label("Faces");
82 opt_rendercol!(ui, world, FaceRenderColor);
83 opt_dragvalue!(ui, world, FaceShrink);
84 ui.end_row();
85 ui.label("Volumes");
87 opt_rendercol!(ui, world, VolumeRenderColor);
88 opt_dragvalue!(ui, world, VolumeShrink);
89 ui.end_row();
90 });
91}
92
93fn draw_color_picker(ui: &mut egui::Ui, color: &mut egui::Color32) {
94 let mut egui_color =
96 egui::Color32::from_rgba_premultiplied(color.r(), color.g(), color.b(), color.a());
97 let color_picker = egui::color_picker::color_edit_button_srgba(
99 ui,
100 &mut egui_color,
101 egui::color_picker::Alpha::Opaque,
102 );
103 if color_picker.changed() {
105 *color = egui::Color32::from_rgba_premultiplied(
106 egui_color.r(),
107 egui_color.g(),
108 egui_color.b(),
109 egui_color.a(),
110 );
111 }
112}
113
114fn draw_picking_options(ui: &mut egui::Ui, world: &mut World) {
117 ui.label(egui::RichText::new("Picking").size(15.));
118 ui.separator(); egui::Grid::new("pick_opt_grid")
121 .num_columns(2)
122 .show(ui, |ui| {
123 ui.label("Enable");
124 {
125 let mut picking_params = world.resource_mut::<PickingPluginsSettings>();
126 ui.checkbox(&mut picking_params.is_enabled, "");
127 }
128 ui.end_row();
129 ui.label("Click nothing deselect all");
130 {
131 let mut picking_params = world.resource_mut::<SelectionPluginSettings>();
132 ui.checkbox(&mut picking_params.click_nothing_deselect_all, "");
133 }
134 });
135}