From 12d152273ac5036faa62d94c442084ed33666c03 Mon Sep 17 00:00:00 2001 From: Oscar Date: Tue, 2 Jul 2024 17:58:09 +0200 Subject: [PATCH] Add new Schedule for all plugins in quick.rs --- crates/bevy-inspector-egui/src/quick.rs | 47 +++++++++++++++++++++---- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/crates/bevy-inspector-egui/src/quick.rs b/crates/bevy-inspector-egui/src/quick.rs index 15a0a48f..f75cf957 100644 --- a/crates/bevy-inspector-egui/src/quick.rs +++ b/crates/bevy-inspector-egui/src/quick.rs @@ -8,10 +8,14 @@ use std::{marker::PhantomData, sync::Mutex}; -use bevy_app::{Plugin, Update}; +use bevy_app::{App, MainScheduleOrder, Plugin, Update}; use bevy_asset::Asset; use bevy_core::TypeRegistrationPlugin; -use bevy_ecs::{prelude::*, query::QueryFilter, schedule::BoxedCondition}; +use bevy_ecs::{ + prelude::*, + query::QueryFilter, + schedule::{BoxedCondition, ScheduleLabel}, +}; use bevy_egui::{EguiContext, EguiPlugin}; use bevy_reflect::Reflect; use bevy_state::state::FreelyMutableState; @@ -22,6 +26,20 @@ use crate::{bevy_inspector, DefaultInspectorConfigPlugin}; const DEFAULT_SIZE: (f32, f32) = (320., 160.); +#[derive(ScheduleLabel, Debug, Clone, PartialEq, Eq, Hash)] +struct Inspect; + +struct InspectSchedulePlugin; +impl Plugin for InspectSchedulePlugin { + fn build(&self, app: &mut App) { + app.init_schedule(Inspect); + + app.world_mut() + .resource_mut::() + .insert_after(Update, Inspect); + } +} + /// Plugin displaying a egui window with an entity list, resources and assets /// /// You can use [`WorldInspectorPlugin::run_if`] to control when the window is shown, for example @@ -67,13 +85,16 @@ impl Plugin for WorldInspectorPlugin { if !app.is_plugin_added::() { app.add_plugins(EguiPlugin); } + if !app.is_plugin_added::() { + app.add_plugins(InspectSchedulePlugin); + } let condition = self.condition.lock().unwrap().take(); let mut system = world_inspector_ui.into_configs(); if let Some(condition) = condition { system.run_if_dyn(condition); } - app.add_systems(Update, system); + app.add_systems(Inspect, system); } } @@ -165,13 +186,16 @@ impl Plugin for ResourceInspectorPlugin { if !app.is_plugin_added::() { app.add_plugins(EguiPlugin); } + if !app.is_plugin_added::() { + app.add_plugins(InspectSchedulePlugin); + } let condition = self.condition.lock().unwrap().take(); let mut system = inspector_ui::.into_configs(); if let Some(condition) = condition { system.run_if_dyn(condition); } - app.add_systems(Update, system); + app.add_systems(Inspect, system); } } @@ -261,13 +285,16 @@ impl Plugin for StateInspectorPlugin { if !app.is_plugin_added::() { app.add_plugins(EguiPlugin); } + if !app.is_plugin_added::() { + app.add_plugins(InspectSchedulePlugin); + } let condition = self.condition.lock().unwrap().take(); let mut system = state_ui::.into_configs(); if let Some(condition) = condition { system.run_if_dyn(condition); } - app.add_systems(Update, system); + app.add_systems(Inspect, system); } } @@ -345,13 +372,16 @@ impl Plugin for AssetInspectorPlugin { if !app.is_plugin_added::() { app.add_plugins(EguiPlugin); } + if !app.is_plugin_added::() { + app.add_plugins(InspectSchedulePlugin); + } let condition = self.condition.lock().unwrap().take(); let mut system = asset_inspector_ui::.into_configs(); if let Some(condition) = condition { system.run_if_dyn(condition); } - app.add_systems(Update, system); + app.add_systems(Inspect, system); } } @@ -427,6 +457,9 @@ where if !app.is_plugin_added::() { app.add_plugins(EguiPlugin); } + if !app.is_plugin_added::() { + app.add_plugins(InspectSchedulePlugin); + } let condition: Option>> = self.condition.lock().unwrap().take(); @@ -434,7 +467,7 @@ where if let Some(condition) = condition { system.run_if_dyn(condition); } - app.add_systems(Update, system); + app.add_systems(Inspect, system); } }