1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
use crate::{Context, Inspectable};
use bevy::ecs::system::Resource;
use bevy::prelude::*;
use bevy_egui::egui;
use egui::Grid;
impl Inspectable for Transform {
type Attributes = ();
fn ui(
&mut self,
ui: &mut bevy_egui::egui::Ui,
_options: Self::Attributes,
context: &mut Context,
) -> bool {
let mut changed = false;
ui.vertical_centered(|ui| {
Grid::new(context.id()).show(ui, |ui| {
ui.label("Translation");
changed |= self.translation.ui(ui, Default::default(), context);
ui.end_row();
ui.label("Rotation");
changed |= self.rotation.ui(ui, Default::default(), context);
self.rotation = self.rotation.normalize();
ui.end_row();
ui.label("Scale");
changed |= self.scale.ui(ui, Default::default(), context);
ui.end_row();
});
});
changed
}
}
impl Inspectable for GlobalTransform {
type Attributes = <Transform as Inspectable>::Attributes;
fn ui(&mut self, ui: &mut egui::Ui, options: Self::Attributes, context: &mut Context) -> bool {
let global_transform = std::mem::take(self);
let mut transform: Transform = global_transform.into();
let changed = transform.ui(ui, options, context);
*self = transform.into();
changed
}
}
impl Inspectable for Name {
type Attributes = ();
fn ui(&mut self, ui: &mut egui::Ui, _: Self::Attributes, _: &mut Context) -> bool {
ui.label(self.as_str());
false
}
}
impl<'a, T: Inspectable> Inspectable for Mut<'a, T> {
type Attributes = T::Attributes;
fn ui(&mut self, ui: &mut egui::Ui, options: Self::Attributes, context: &mut Context) -> bool {
(**self).ui(ui, options, context)
}
}
impl<'a, T: Resource + Inspectable> Inspectable for ResMut<'a, T> {
type Attributes = T::Attributes;
fn ui(&mut self, ui: &mut egui::Ui, options: Self::Attributes, context: &mut Context) -> bool {
(**self).ui(ui, options, context)
}
}
impl<'a, T: Inspectable> Inspectable for NonSendMut<'a, T> {
type Attributes = T::Attributes;
fn ui(&mut self, ui: &mut egui::Ui, options: Self::Attributes, context: &mut Context) -> bool {
(**self).ui(ui, options, context)
}
}