diff --git a/crates/bevy_diagnostic/src/entity_count_diagnostics_plugin.rs b/crates/bevy_diagnostic/src/entity_count_diagnostics_plugin.rs index b20a82bf6c..1de4f4c029 100644 --- a/crates/bevy_diagnostic/src/entity_count_diagnostics_plugin.rs +++ b/crates/bevy_diagnostic/src/entity_count_diagnostics_plugin.rs @@ -1,20 +1,39 @@ use bevy_app::prelude::*; use bevy_ecs::entity::Entities; -use crate::{Diagnostic, DiagnosticPath, Diagnostics, RegisterDiagnostic}; +use crate::{ + Diagnostic, DiagnosticPath, Diagnostics, RegisterDiagnostic, DEFAULT_MAX_HISTORY_LENGTH, +}; /// Adds "entity count" diagnostic to an App. /// /// # See also /// /// [`LogDiagnosticsPlugin`](crate::LogDiagnosticsPlugin) to output diagnostics to the console. -#[derive(Default)] -pub struct EntityCountDiagnosticsPlugin; +pub struct EntityCountDiagnosticsPlugin { + /// The total number of values to keep. + pub max_history_length: usize, +} + +impl Default for EntityCountDiagnosticsPlugin { + fn default() -> Self { + Self::new(DEFAULT_MAX_HISTORY_LENGTH) + } +} + +impl EntityCountDiagnosticsPlugin { + /// Creates a new `EntityCountDiagnosticsPlugin` with the specified `max_history_length`. + pub fn new(max_history_length: usize) -> Self { + Self { max_history_length } + } +} impl Plugin for EntityCountDiagnosticsPlugin { fn build(&self, app: &mut App) { - app.register_diagnostic(Diagnostic::new(Self::ENTITY_COUNT)) - .add_systems(Update, Self::diagnostic_system); + app.register_diagnostic( + Diagnostic::new(Self::ENTITY_COUNT).with_max_history_length(self.max_history_length), + ) + .add_systems(Update, Self::diagnostic_system); } } diff --git a/examples/diagnostics/log_diagnostics.rs b/examples/diagnostics/log_diagnostics.rs index 0e00e69ccd..1a36f9a1f2 100644 --- a/examples/diagnostics/log_diagnostics.rs +++ b/examples/diagnostics/log_diagnostics.rs @@ -33,7 +33,7 @@ fn main() { // Adds frame time, FPS and frame count diagnostics. FrameTimeDiagnosticsPlugin::default(), // Adds an entity count diagnostic. - EntityCountDiagnosticsPlugin, + EntityCountDiagnosticsPlugin::default(), // Adds cpu and memory usage diagnostics for systems and the entire game process. SystemInformationDiagnosticsPlugin, // Forwards various diagnostics from the render app to the main app.