From e02653b93e45344d3a1c402437b3a35a1b1e1d1f Mon Sep 17 00:00:00 2001 From: Trashtalk Date: Sun, 22 Jun 2025 22:49:42 +0200 Subject: [PATCH 1/2] added num_entities to world --- crates/bevy_app/src/app.rs | 2 +- crates/bevy_ecs/src/lib.rs | 4 ++-- crates/bevy_ecs/src/observer/mod.rs | 2 +- crates/bevy_ecs/src/system/commands/mod.rs | 2 +- crates/bevy_ecs/src/world/command_queue.rs | 6 +++--- crates/bevy_ecs/src/world/mod.rs | 6 ++++++ 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/crates/bevy_app/src/app.rs b/crates/bevy_app/src/app.rs index af5183b159f6b..6c2c25d845038 100644 --- a/crates/bevy_app/src/app.rs +++ b/crates/bevy_app/src/app.rs @@ -1582,7 +1582,7 @@ mod tests { app.add_systems(EnterMainMenu, (foo, bar)); app.world_mut().run_schedule(EnterMainMenu); - assert_eq!(app.world().entities().len(), 2); + assert_eq!(app.world().num_entities(), 2); } #[test] diff --git a/crates/bevy_ecs/src/lib.rs b/crates/bevy_ecs/src/lib.rs index ecd77b028fae4..3fff349376af8 100644 --- a/crates/bevy_ecs/src/lib.rs +++ b/crates/bevy_ecs/src/lib.rs @@ -1637,7 +1637,7 @@ mod tests { assert_eq!(q1.iter(&world).len(), 1); assert_eq!(q2.iter(&world).len(), 1); - assert_eq!(world.entities().len(), 2); + assert_eq!(world.num_entities(), 2); world.clear_entities(); @@ -1652,7 +1652,7 @@ mod tests { "world should not contain sparse set components" ); assert_eq!( - world.entities().len(), + world.num_entities(), 0, "world should not have any entities" ); diff --git a/crates/bevy_ecs/src/observer/mod.rs b/crates/bevy_ecs/src/observer/mod.rs index b3a8b3b5cd2c7..ad0956f6d9a0f 100644 --- a/crates/bevy_ecs/src/observer/mod.rs +++ b/crates/bevy_ecs/src/observer/mod.rs @@ -1315,7 +1315,7 @@ mod tests { world.spawn(A).flush(); assert_eq!(vec!["add_2", "add_1"], world.resource::().0); // Our A entity plus our two observers - assert_eq!(world.entities().len(), 3); + assert_eq!(world.num_entities(), 3); } #[test] diff --git a/crates/bevy_ecs/src/system/commands/mod.rs b/crates/bevy_ecs/src/system/commands/mod.rs index 84f9784228ff4..9f594402a3628 100644 --- a/crates/bevy_ecs/src/system/commands/mod.rs +++ b/crates/bevy_ecs/src/system/commands/mod.rs @@ -2342,7 +2342,7 @@ mod tests { .spawn((W(1u32), W(2u64))) .id(); command_queue.apply(&mut world); - assert_eq!(world.entities().len(), 1); + assert_eq!(world.num_entities(), 1); let results = world .query::<(&W, &W)>() .iter(&world) diff --git a/crates/bevy_ecs/src/world/command_queue.rs b/crates/bevy_ecs/src/world/command_queue.rs index e8f820c0661f4..8e2776de46953 100644 --- a/crates/bevy_ecs/src/world/command_queue.rs +++ b/crates/bevy_ecs/src/world/command_queue.rs @@ -423,12 +423,12 @@ mod test { let mut world = World::new(); queue.apply(&mut world); - assert_eq!(world.entities().len(), 2); + assert_eq!(world.num_entities(), 2); // The previous call to `apply` cleared the queue. // This call should do nothing. queue.apply(&mut world); - assert_eq!(world.entities().len(), 2); + assert_eq!(world.num_entities(), 2); } #[expect( @@ -462,7 +462,7 @@ mod test { queue.push(SpawnCommand); queue.push(SpawnCommand); queue.apply(&mut world); - assert_eq!(world.entities().len(), 3); + assert_eq!(world.num_entities(), 3); } #[test] diff --git a/crates/bevy_ecs/src/world/mod.rs b/crates/bevy_ecs/src/world/mod.rs index 2fb8f2d0eb856..970f5f3c427e9 100644 --- a/crates/bevy_ecs/src/world/mod.rs +++ b/crates/bevy_ecs/src/world/mod.rs @@ -216,6 +216,12 @@ impl World { &mut self.entities } + /// Retrieves the number of [`Entities`] in the world. + #[inline] + pub fn num_entities(&self) -> u32 { + self.entities.len() + } + /// Retrieves this world's [`Archetypes`] collection. #[inline] pub fn archetypes(&self) -> &Archetypes { From f1708396ca4ca1e5fd0d9556f9c31365d6aaa905 Mon Sep 17 00:00:00 2001 From: Trashtalk217 Date: Mon, 23 Jun 2025 00:08:05 +0200 Subject: [PATCH 2/2] Update crates/bevy_ecs/src/world/mod.rs Co-authored-by: Alice Cecile --- crates/bevy_ecs/src/world/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/bevy_ecs/src/world/mod.rs b/crates/bevy_ecs/src/world/mod.rs index 970f5f3c427e9..63e5d8543584d 100644 --- a/crates/bevy_ecs/src/world/mod.rs +++ b/crates/bevy_ecs/src/world/mod.rs @@ -217,6 +217,8 @@ impl World { } /// Retrieves the number of [`Entities`] in the world. + /// + /// This is helpful as a diagnostic, but it can also be used effectively in tests. #[inline] pub fn num_entities(&self) -> u32 { self.entities.len()