Updated egui to 0.12, fixed window closing

This commit is contained in:
Ben Wallis 2021-06-13 14:10:06 +01:00
parent da2fd8c7bf
commit 0db5d965a6
8 changed files with 63 additions and 54 deletions

25
Cargo.lock generated
View File

@ -1442,18 +1442,17 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
[[package]] [[package]]
name = "egui" name = "egui"
version = "0.11.0" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d7d6535c3ecdc8627a72c1c52d052d66cd9f71c238428690cc46bef9d1f2bce" checksum = "788148861d80b87d28d64440a3d31cae190e50ccc3ea585597466d38428365d7"
dependencies = [ dependencies = [
"epaint", "epaint",
] ]
[[package]] [[package]]
name = "egui_wgpu_backend" name = "egui_wgpu_backend"
version = "0.7.0" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "git+https://github.com/hasenbanck/egui_wgpu_backend.git?rev=63a002c6a9b6c016e45806dd065864431caab621#63a002c6a9b6c016e45806dd065864431caab621"
checksum = "f6aa6fec3ad8de51b5d7e2a11eb6cb0fd3533a7b817e5af54eda8e7fe53729bd"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"epi", "epi",
@ -1462,9 +1461,9 @@ dependencies = [
[[package]] [[package]]
name = "egui_winit_platform" name = "egui_winit_platform"
version = "0.6.0" version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb2766d3864d7391e34b9aa78caaa01c162baf1481523a371914e3f42144d84" checksum = "69ff13f463b60b77361ddf2125e6cbfe410fc66bf4004a8e720508ce9027a6b6"
dependencies = [ dependencies = [
"egui", "egui",
"winit", "winit",
@ -1478,9 +1477,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]] [[package]]
name = "emath" name = "emath"
version = "0.11.0" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4ed72c14666517e5c0198490864adea871081abe4f5523af8c3f4f56595142e" checksum = "3e73d6c8c70eadb71756fbbc3c303ab25e163b46b656886dd250de5636efea12"
[[package]] [[package]]
name = "encoding_rs" name = "encoding_rs"
@ -1540,9 +1539,9 @@ dependencies = [
[[package]] [[package]]
name = "epaint" name = "epaint"
version = "0.11.0" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a19eff631454edbe5abe4693be00be0c1ea9832d727dc385c16841caa2d0162" checksum = "80e2db640801230bdda80629bc3a063927a462f5eaf38a98da676954e78ccb99"
dependencies = [ dependencies = [
"ahash 0.7.2", "ahash 0.7.2",
"atomic_refcell", "atomic_refcell",
@ -1553,9 +1552,9 @@ dependencies = [
[[package]] [[package]]
name = "epi" name = "epi"
version = "0.11.0" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2242aee03bc64fd16d58866e18c0f210004b95963bef30820747d18b9f5d627" checksum = "59c4f6cbede1fc8f836384f85295a59199a4825940abcc3a8a29cfe2e3c37583"
dependencies = [ dependencies = [
"egui", "egui",
] ]

View File

@ -122,7 +122,6 @@ winit = { git = "https://gitlab.com/veloren/winit.git", branch = "macos-test-spi
vek = { git = "https://gitlab.com/veloren/vek.git", branch = "fix_intrinsics2" } vek = { git = "https://gitlab.com/veloren/vek.git", branch = "fix_intrinsics2" }
# patch wgpu so we can use wgpu-profiler crate # patch wgpu so we can use wgpu-profiler crate
wgpu = { git = "https://github.com/gfx-rs/wgpu-rs.git", rev = "7486bdad64bb5d17b709ecccb41e063469efff88" } wgpu = { git = "https://github.com/gfx-rs/wgpu-rs.git", rev = "7486bdad64bb5d17b709ecccb41e063469efff88" }
# # use the latest fixes in naga (remove when updates trickle down to wgpu-rs) # # use the latest fixes in naga (remove when updates trickle down to wgpu-rs)
# naga = { git = "https://github.com/gfx-rs/naga.git", rev = "3a0f0144112ff621dd7f731bf455adf6cab19164" } # naga = { git = "https://github.com/gfx-rs/naga.git", rev = "3a0f0144112ff621dd7f731bf455adf6cab19164" }
# # use the latest fixes in gfx (remove when updates trickle down to wgpu-rs) # # use the latest fixes in gfx (remove when updates trickle down to wgpu-rs)

View File

@ -65,10 +65,10 @@ glyph_brush = "0.7.0"
keyboard-keynames = { git = "https://gitlab.com/Frinksy/keyboard-keynames.git", rev = "a97ae509cdb9dc70cf1bf0af762d2d1d3a0d6e0c" } keyboard-keynames = { git = "https://gitlab.com/Frinksy/keyboard-keynames.git", rev = "a97ae509cdb9dc70cf1bf0af762d2d1d3a0d6e0c" }
# EGUI # EGUI
egui = {version = "0.11", optional = true } egui = {version = "0.12", optional = true }
egui_wgpu_backend = {version = "0.7", optional = true } egui_wgpu_backend = {git = "https://github.com/hasenbanck/egui_wgpu_backend.git", rev = "63a002c6a9b6c016e45806dd065864431caab621", optional = true }
#egui_wgpu_backend = { path = "../../egui_wgpu_backend" } #egui_wgpu_backend = { path = "../../egui_wgpu_backend" }
egui_winit_platform = {version = "0.6", optional = true } egui_winit_platform = {version = "0.7", optional = true }
#egui_winit_platform = { path = "../../egui_winit_platform" } #egui_winit_platform = { path = "../../egui_winit_platform" }
# ECS # ECS

View File

@ -11,8 +11,8 @@ be-dyn-lib = []
[dependencies] [dependencies]
client = {package = "veloren-client", path = "../../client"} client = {package = "veloren-client", path = "../../client"}
common = {package = "veloren-common", path = "../../common"} common = {package = "veloren-common", path = "../../common"}
egui = "0.11" egui = "0.12"
egui_winit_platform = "0.6" egui_winit_platform = "0.7"
voxygen-dynlib = {package = "veloren-voxygen-dynlib", path = "../dynlib"} voxygen-dynlib = {package = "veloren-voxygen-dynlib", path = "../dynlib"}
# Hot Reloading # Hot Reloading

View File

@ -46,6 +46,7 @@ const MAINTAIN_EGUI_FN: &[u8] = b"maintain_egui_inner\0";
pub fn maintain( pub fn maintain(
platform: &mut Platform, platform: &mut Platform,
egui_state: &mut EguiInnerState, egui_state: &mut EguiInnerState,
egui_windows: &mut EguiWindows,
client: &Client, client: &Client,
debug_info: &Option<DebugInfo>, debug_info: &Option<DebugInfo>,
added_cylinder_shape_id: Option<u64>, added_cylinder_shape_id: Option<u64>,
@ -55,6 +56,7 @@ pub fn maintain(
maintain_egui_inner( maintain_egui_inner(
platform, platform,
egui_state, egui_state,
egui_windows,
client, client,
debug_info, debug_info,
added_cylinder_shape_id, added_cylinder_shape_id,
@ -71,6 +73,7 @@ pub fn maintain(
fn( fn(
&mut Platform, &mut Platform,
&mut EguiInnerState, &mut EguiInnerState,
&mut EguiWindows,
&Client, &Client,
&Option<DebugInfo>, &Option<DebugInfo>,
Option<u64>, Option<u64>,
@ -89,6 +92,7 @@ pub fn maintain(
maintain_fn( maintain_fn(
platform, platform,
egui_state, egui_state,
egui_windows,
client, client,
debug_info, debug_info,
added_cylinder_shape_id, added_cylinder_shape_id,
@ -117,11 +121,10 @@ pub struct EguiInnerState {
max_entity_distance: f32, max_entity_distance: f32,
selected_entity_cylinder_height: f32, selected_entity_cylinder_height: f32,
frame_times: Vec<f32>, frame_times: Vec<f32>,
windows: EguiWindows,
} }
#[derive(Default)] #[derive(Clone, Default)]
struct EguiWindows { pub struct EguiWindows {
egui_inspection: bool, egui_inspection: bool,
egui_settings: bool, egui_settings: bool,
egui_memory: bool, egui_memory: bool,
@ -136,7 +139,6 @@ impl Default for EguiInnerState {
max_entity_distance: 100000.0, max_entity_distance: 100000.0,
selected_entity_cylinder_height: 10.0, selected_entity_cylinder_height: 10.0,
frame_times: Vec::new(), frame_times: Vec::new(),
windows: Default::default(),
} }
} }
} }
@ -163,6 +165,7 @@ pub struct EguiActions {
pub fn maintain_egui_inner( pub fn maintain_egui_inner(
platform: &mut Platform, platform: &mut Platform,
egui_state: &mut EguiInnerState, egui_state: &mut EguiInnerState,
egui_windows: &mut EguiWindows,
client: &Client, client: &Client,
debug_info: &Option<DebugInfo>, debug_info: &Option<DebugInfo>,
added_cylinder_shape_id: Option<u64>, added_cylinder_shape_id: Option<u64>,
@ -204,8 +207,8 @@ pub fn maintain_egui_inner(
}); });
ui.group(|ui| { ui.group(|ui| {
ui.vertical(|ui| { ui.vertical(|ui| {
ui.checkbox(&mut egui_state.windows.ecs_entities, "ECS Entities"); ui.checkbox(&mut egui_windows.ecs_entities, "ECS Entities");
ui.checkbox(&mut egui_state.windows.frame_time, "Frame Time"); ui.checkbox(&mut egui_windows.frame_time, "Frame Time");
}); });
}); });
@ -213,57 +216,57 @@ pub fn maintain_egui_inner(
ui.vertical(|ui| { ui.vertical(|ui| {
ui.label("Show EGUI Windows"); ui.label("Show EGUI Windows");
ui.horizontal(|ui| { ui.horizontal(|ui| {
ui.checkbox(&mut egui_state.windows.egui_inspection, "🔍 Inspection"); ui.checkbox(&mut egui_windows.egui_inspection, "🔍 Inspection");
ui.checkbox(&mut egui_state.windows.egui_settings, "🔍 Settings"); ui.checkbox(&mut egui_windows.egui_settings, "🔍 Settings");
ui.checkbox(&mut egui_state.windows.egui_memory, "📝 Memory"); ui.checkbox(&mut egui_windows.egui_memory, "📝 Memory");
}) })
}) })
}); });
}); });
Window::new("🔧 Settings") Window::new("🔧 Settings")
.open(&mut egui_state.windows.egui_settings) .open(&mut egui_windows.egui_settings)
.scroll(true) .scroll(true)
.show(ctx, |ui| { .show(ctx, |ui| {
ctx.settings_ui(ui); ctx.settings_ui(ui);
}); });
Window::new("🔍 Inspection") Window::new("🔍 Inspection")
.open(&mut egui_state.windows.egui_inspection) .open(&mut egui_windows.egui_inspection)
.scroll(true) .scroll(true)
.show(ctx, |ui| { .show(ctx, |ui| {
ctx.inspection_ui(ui); ctx.inspection_ui(ui);
}); });
Window::new("📝 Memory") Window::new("📝 Memory")
.open(&mut egui_state.windows.egui_memory) .open(&mut egui_windows.egui_memory)
.resizable(false) .resizable(false)
.show(ctx, |ui| { .show(ctx, |ui| {
ctx.memory_ui(ui); ctx.memory_ui(ui);
}); });
if egui_state.windows.frame_time { Window::new("Frame Time")
Window::new("Frame Time") .open(&mut egui_windows.frame_time)
.default_width(200.0) .default_width(200.0)
.default_height(200.0) .default_height(200.0)
.show(ctx, |ui| { .show(ctx, |ui| {
let plot = Plot::default().curve(Curve::from_values_iter( let plot = Plot::new("Frame Time").curve(Curve::from_values_iter(
egui_state egui_state
.frame_times .frame_times
.iter() .iter()
.enumerate() .enumerate()
.map(|(i, x)| Value::new(i as f64, *x)), .map(|(i, x)| Value::new(i as f64, *x)),
)); ));
ui.add(plot); ui.add(plot);
}); });
}
if egui_state.windows.ecs_entities { if egui_windows.ecs_entities {
let ecs = client.state().ecs(); let ecs = client.state().ecs();
let positions = client.state().ecs().read_storage::<comp::Pos>(); let positions = client.state().ecs().read_storage::<comp::Pos>();
let client_pos = positions.get(client.entity()); let client_pos = positions.get(client.entity());
egui::Window::new("ECS Entities") egui::Window::new("ECS Entities")
.open(&mut egui_windows.ecs_entities)
.default_width(500.0) .default_width(500.0)
.default_height(500.0) .default_height(500.0)
.show(ctx, |ui| { .show(ctx, |ui| {
@ -383,7 +386,6 @@ pub fn maintain_egui_inner(
}); });
if let Some(selected_entity_info) = &mut egui_state.selected_entity_info { if let Some(selected_entity_info) = &mut egui_state.selected_entity_info {
let selected_entity = ecs.entities().entity(selected_entity_info.entity_id); let selected_entity = ecs.entities().entity(selected_entity_info.entity_id);
//let selected_entity_id = selected_entity_info.entity_id;
if !selected_entity.gen().is_alive() { if !selected_entity.gen().is_alive() {
previous_selected_entity = mem::take(&mut egui_state.selected_entity_info); previous_selected_entity = mem::take(&mut egui_state.selected_entity_info);
} else { } else {

View File

@ -367,7 +367,7 @@ impl Renderer {
#[cfg(feature = "egui-ui")] #[cfg(feature = "egui-ui")]
let egui_renderpass = let egui_renderpass =
egui_wgpu_backend::RenderPass::new(&*device, TextureFormat::Bgra8UnormSrgb); egui_wgpu_backend::RenderPass::new(&*device, TextureFormat::Bgra8UnormSrgb, 1);
Ok(Self { Ok(Self {
device, device,

View File

@ -1014,9 +1014,13 @@ impl PlayState for SessionState {
// Maintain egui (debug interface) // Maintain egui (debug interface)
#[cfg(feature = "egui-ui")] #[cfg(feature = "egui-ui")]
global_state if global_state.settings.interface.toggle_debug {
.egui_state global_state.egui_state.maintain(
.maintain(&self.client.borrow(), &mut self.scene, &debug_info); &self.client.borrow(),
&mut self.scene,
&debug_info,
);
}
// Look for changes in the localization files // Look for changes in the localization files
if global_state.i18n.reloaded() { if global_state.i18n.reloaded() {
@ -1458,7 +1462,9 @@ impl PlayState for SessionState {
drop(third_pass); drop(third_pass);
#[cfg(feature = "egui-ui")] #[cfg(feature = "egui-ui")]
drawer.draw_egui(&mut global_state.egui_state.platform, _scale_factor); if global_state.settings.interface.toggle_debug {
drawer.draw_egui(&mut global_state.egui_state.platform, _scale_factor);
}
} }
} }

View File

@ -7,11 +7,12 @@ use common::debug_info::DebugInfo;
use core::mem; use core::mem;
use egui::FontDefinitions; use egui::FontDefinitions;
use egui_winit_platform::{Platform, PlatformDescriptor}; use egui_winit_platform::{Platform, PlatformDescriptor};
use voxygen_egui::{DebugShapeAction, EguiInnerState}; use voxygen_egui::{DebugShapeAction, EguiInnerState, EguiWindows};
pub struct EguiState { pub struct EguiState {
pub platform: Platform, pub platform: Platform,
egui_inner_state: EguiInnerState, egui_inner_state: EguiInnerState,
egui_windows: EguiWindows,
new_debug_shape_id: Option<u64>, new_debug_shape_id: Option<u64>,
} }
@ -28,6 +29,7 @@ impl EguiState {
Self { Self {
platform, platform,
egui_inner_state: EguiInnerState::default(), egui_inner_state: EguiInnerState::default(),
egui_windows: EguiWindows::default(),
new_debug_shape_id: None, new_debug_shape_id: None,
} }
} }
@ -36,6 +38,7 @@ impl EguiState {
let egui_actions = voxygen_egui::maintain( let egui_actions = voxygen_egui::maintain(
&mut self.platform, &mut self.platform,
&mut self.egui_inner_state, &mut self.egui_inner_state,
&mut self.egui_windows,
client, client,
debug_info, debug_info,
mem::take(&mut self.new_debug_shape_id), mem::take(&mut self.new_debug_shape_id),