bevy_diagnostic/
entity_count_diagnostics_plugin.rs

1use bevy_app::prelude::*;
2use bevy_ecs::entity::Entities;
3
4use crate::{Diagnostic, DiagnosticPath, Diagnostics, RegisterDiagnostic};
5
6/// Adds "entity count" diagnostic to an App.
7///
8/// # See also
9///
10/// [`LogDiagnosticsPlugin`](crate::LogDiagnosticsPlugin) to output diagnostics to the console.
11#[derive(Default)]
12pub struct EntityCountDiagnosticsPlugin;
13
14impl Plugin for EntityCountDiagnosticsPlugin {
15    fn build(&self, app: &mut App) {
16        app.register_diagnostic(Diagnostic::new(Self::ENTITY_COUNT))
17            .add_systems(Update, Self::diagnostic_system);
18    }
19}
20
21impl EntityCountDiagnosticsPlugin {
22    pub const ENTITY_COUNT: DiagnosticPath = DiagnosticPath::const_new("entity_count");
23
24    pub fn diagnostic_system(mut diagnostics: Diagnostics, entities: &Entities) {
25        diagnostics.add_measurement(&Self::ENTITY_COUNT, || entities.len() as f64);
26    }
27}