From eec38004a826b4b07d9f4a30177a389465040feb Mon Sep 17 00:00:00 2001 From: Nihilistas <69765352+Nihilistas@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:54:51 +0200 Subject: [PATCH] Add example demonstrating how to enable / disable diagnostics (#14741) # Objective fixes #14569 ## Solution added an example to the diagnostic examples and linked the code to the docs of the diagnostic library itself. ## Testing I tested locally on my laptop in a web browser. Looked fine. You are able to collapse the whole "intro" part of the doc to get to the links sooner (for those who may think that including the example code here is annoying to scroll through) I would like people to run ```cargo doc``` and go the bevy_diagnostic page to see if they have any issues or suggestions. --- ## Showcase Screenshot 2024-08-14 at 12 52 16 --------- Co-authored-by: dpeke --- Cargo.toml | 11 +++++++ examples/README.md | 1 + .../enabling_disabling_diagnostic.rs | 30 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 examples/diagnostics/enabling_disabling_diagnostic.rs diff --git a/Cargo.toml b/Cargo.toml index 2b0903201504f..978c1b754f9fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1604,6 +1604,17 @@ description = "Shows how to create a custom diagnostic" category = "Diagnostics" wasm = true +[[example]] +name = "enabling_disabling_diagnostic" +path = "examples/diagnostics/enabling_disabling_diagnostic.rs" +doc-scrape-examples = true + +[package.metadata.example.enabling_disabling_diagnostic] +name = "Enabling/disabling diagnostic" +description = "Shows how to disable/re-enable a Diagnostic during runtime" +category = "Diagnostics" +wasm = true + # ECS (Entity Component System) [[example]] name = "ecs_guide" diff --git a/examples/README.md b/examples/README.md index 85b56b4d8ee54..b1fa8ac61d981 100644 --- a/examples/README.md +++ b/examples/README.md @@ -265,6 +265,7 @@ Example | Description Example | Description --- | --- [Custom Diagnostic](../examples/diagnostics/custom_diagnostic.rs) | Shows how to create a custom diagnostic +[Enabling/disabling diagnostic](../examples/diagnostics/enabling_disabling_diagnostic.rs) | Shows how to disable/re-enable a Diagnostic during runtime [Log Diagnostics](../examples/diagnostics/log_diagnostics.rs) | Add a plugin that logs diagnostics, like frames per second (FPS), to the console ## ECS (Entity Component System) diff --git a/examples/diagnostics/enabling_disabling_diagnostic.rs b/examples/diagnostics/enabling_disabling_diagnostic.rs new file mode 100644 index 0000000000000..27562bb98c645 --- /dev/null +++ b/examples/diagnostics/enabling_disabling_diagnostic.rs @@ -0,0 +1,30 @@ +//! Shows how to disable/re-enable a Diagnostic during runtime + +use std::time::Duration; + +use bevy::{ + diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}, + prelude::*, + time::common_conditions::on_timer, +}; + +fn main() { + App::new() + .add_plugins(( + DefaultPlugins, + FrameTimeDiagnosticsPlugin, + LogDiagnosticsPlugin::default(), + )) + .add_systems( + Update, + toggle.run_if(on_timer(Duration::from_secs_f32(10.0))), + ) + .run(); +} + +fn toggle(mut store: ResMut) { + for diag in store.iter_mut() { + info!("toggling diagnostic {}", diag.path()); + diag.is_enabled = !diag.is_enabled; + } +}