2022-07-28 17:48:01 +00:00
|
|
|
use bevy::prelude::*;
|
|
|
|
use bevy_egui::{egui, EguiContext};
|
|
|
|
use crate::*;
|
|
|
|
|
|
|
|
pub fn action_bar_sys(
|
|
|
|
mut egui_ctx: ResMut<EguiContext>,
|
|
|
|
mut state: ResMut<UiState>,
|
|
|
|
colors: Res<ButtonsColors>,
|
|
|
|
) {
|
|
|
|
egui::Window::new("buttons_float")
|
|
|
|
.default_pos((20.0, 20.0))
|
|
|
|
.title_bar(false)
|
|
|
|
.resizable(false)
|
|
|
|
.show(egui_ctx.ctx_mut(), |ui| {
|
|
|
|
ui.horizontal(|hui| {
|
|
|
|
let m = hui.button(egui::RichText::new("M").color(state.current_action_color(&colors, Action::Modify)))
|
|
|
|
.on_hover_text("Modify");
|
|
|
|
if m.clicked() {
|
|
|
|
state.current_action = Action::Modify;
|
|
|
|
}
|
|
|
|
let r = hui.button(egui::RichText::new("R").color(state.current_action_color(&colors, Action::Rotate)))
|
|
|
|
.on_hover_text("Rotate");
|
|
|
|
if r.clicked() {
|
|
|
|
state.current_action = Action::Rotate;
|
|
|
|
}
|
|
|
|
let c = hui.button(egui::RichText::new("C").color(state.current_action_color(&colors, Action::Create)))
|
|
|
|
.on_hover_text("Create");
|
|
|
|
if c.clicked() {
|
|
|
|
state.current_action = Action::Create;
|
|
|
|
}
|
|
|
|
let d = hui.button(egui::RichText::new("D").color(state.current_action_color(&colors, Action::Delete)))
|
|
|
|
.on_hover_text("Delete");
|
|
|
|
if d.clicked() {
|
|
|
|
state.current_action = Action::Delete;
|
|
|
|
}
|
|
|
|
hui.label(" | ");
|
|
|
|
|
|
|
|
if hui.button(" I ").on_hover_text("Import Image").clicked() {
|
|
|
|
println!("Importing Images is still not supported!");
|
|
|
|
}
|
|
|
|
|
|
|
|
hui.label(": :");
|
|
|
|
});
|
|
|
|
|
|
|
|
if state.current_action == Action::Create {
|
|
|
|
ui.horizontal(|hui| {
|
|
|
|
let tri = hui.button(egui::RichText::new("Tri").color(state.create_shape_color(&colors, CreateShape::Triangle)))
|
|
|
|
.on_hover_text("Triangle - from 3 edges");
|
|
|
|
if tri.clicked() {
|
|
|
|
state.create_shape = CreateShape::Triangle;
|
|
|
|
}
|
|
|
|
let squ = hui.button(egui::RichText::new("Squ").color(state.create_shape_color(&colors, CreateShape::Square)))
|
|
|
|
.on_hover_text("Square - from 2 opposing edges");
|
|
|
|
if squ.clicked() {
|
|
|
|
state.create_shape = CreateShape::Square;
|
|
|
|
}
|
|
|
|
let cir = hui.button(egui::RichText::new("Cir").color(state.create_shape_color(&colors, CreateShape::Circle)))
|
|
|
|
.on_hover_text("Circle - center point and radius");
|
|
|
|
if cir.clicked() {
|
|
|
|
state.create_shape = CreateShape::Circle;
|
|
|
|
}
|
|
|
|
// let cap = hui.button(egui::RichText::new("Cap").color(state.create_shape_color(&colors, CreateShape::Capsule)))
|
|
|
|
// .on_hover_text("Capsule - from 2 center points and a radius");
|
|
|
|
// if cap.clicked() {
|
|
|
|
// state.create_shape = CreateShape::Capsule;
|
|
|
|
// }
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn shape_tree_sys(
|
|
|
|
mut egui_ctx: ResMut<EguiContext>,
|
2022-07-30 14:50:52 +00:00
|
|
|
shapes: Query<(Entity, &ShapeData)>,
|
2022-07-28 17:48:01 +00:00
|
|
|
mut transforms: Query<&mut Transform>,
|
|
|
|
) {
|
|
|
|
if !shapes.is_empty() {
|
|
|
|
egui::Window::new("Shape Tree")
|
|
|
|
.default_pos((10.0, 100.0))
|
|
|
|
.title_bar(true)
|
|
|
|
.resizable(false)
|
|
|
|
.show(egui_ctx.ctx_mut(), |ui| {
|
2022-07-30 14:50:52 +00:00
|
|
|
for (e, sd) in shapes.iter() {
|
|
|
|
ui.push_id(e.id(), |ui| {
|
2022-07-28 17:48:01 +00:00
|
|
|
|
2022-07-30 14:50:52 +00:00
|
|
|
ui.collapsing(format!("{:?}", sd.shape), |ui| {
|
|
|
|
|
|
|
|
if let Ok(mut t) = transforms.get_mut(sd.main_shape) {
|
|
|
|
ui.horizontal(|hui| {
|
|
|
|
hui.label("Translation:");
|
|
|
|
hui.add(egui::DragValue::new(&mut t.translation.x));
|
|
|
|
hui.add(egui::DragValue::new(&mut t.translation.y));
|
|
|
|
});
|
|
|
|
ui.horizontal(|hui| {
|
|
|
|
hui.label("Rotation:");
|
|
|
|
let mut rot = t.rotation.to_euler(EulerRot::XYZ).2.to_degrees();
|
|
|
|
if hui.add(egui::DragValue::new(&mut rot).suffix("°")).changed() {
|
|
|
|
t.rotation = Quat::from_rotation_z(rot.to_radians());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
2022-07-28 17:48:01 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|