From 65085e2a1d8cc2ee5173831d65516176204003eb Mon Sep 17 00:00:00 2001 From: Helix Date: Tue, 12 May 2026 12:00:26 +0800 Subject: [PATCH] export `resource_entity` in `EntityWorldMut` and `TemplateContext` --- crates/bevy_ecs/src/template.rs | 6 ++++++ .../src/world/entity_access/world_mut.rs | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/crates/bevy_ecs/src/template.rs b/crates/bevy_ecs/src/template.rs index 7a5756d540548..fb46601be7988 100644 --- a/crates/bevy_ecs/src/template.rs +++ b/crates/bevy_ecs/src/template.rs @@ -84,6 +84,12 @@ impl<'a, 'w> TemplateContext<'a, 'w> { pub fn resource_mut>(&mut self) -> Mut<'_, R> { self.entity.resource_mut() } + + /// Retrieves the entity associated with the given resource `R`, if it exists. + #[inline] + pub fn resource_entity(&self) -> Option { + self.entity.resource_entity::() + } } /// A mapping from from an entity reference's (scope, index) to a contiguous flat index that uniquely diff --git a/crates/bevy_ecs/src/world/entity_access/world_mut.rs b/crates/bevy_ecs/src/world/entity_access/world_mut.rs index d77a26315b30f..d78e36aaa1523 100644 --- a/crates/bevy_ecs/src/world/entity_access/world_mut.rs +++ b/crates/bevy_ecs/src/world/entity_access/world_mut.rs @@ -14,7 +14,7 @@ use crate::{ ReleaseStateQueryData, SingleEntityQueryData, }, relationship::RelationshipHookMode, - resource::Resource, + resource::{Resource, ResourceEntities}, storage::{SparseSets, Table}, template::{EntityScopes, ScopedEntities, Template, TemplateContext}, world::{ @@ -732,6 +732,21 @@ impl<'w> EntityWorldMut<'w> { }) } + /// Retrieves this world's [`ResourceEntities`]. + #[inline] + #[track_caller] + pub fn resource_entities(&self) -> &ResourceEntities { + self.world.resource_entities() + } + + /// Retrieves the [`Entity`] associated with the resource of type `R`, if it exists. + #[inline] + #[track_caller] + pub fn resource_entity(&self) -> Option { + let component_id = self.world.component_id::()?; + self.world.resource_entities().get(component_id) + } + /// Retrieves the change ticks for the given component. This can be useful for implementing change /// detection in custom runtimes. ///