pub struct FilteredEntityRef<'w, 's> { /* private fields */ }Expand description
Provides read-only access to a single entity and some of its components defined by the contained Access.
To define the access when used as a QueryData,
use a QueryBuilder or QueryParamBuilder.
The FilteredEntityRef must be the entire QueryData, and not nested inside a tuple with other data.
// This gives the `FilteredEntityRef` access to `&A`.
let mut query = QueryBuilder::<FilteredEntityRef>::new(&mut world)
.data::<&A>()
.build();
let filtered_entity: FilteredEntityRef = query.single(&mut world).unwrap();
let component: &A = filtered_entity.get().unwrap();Implementations§
Source§impl<'w, 's> FilteredEntityRef<'w, 's>
impl<'w, 's> FilteredEntityRef<'w, 's>
Sourcepub fn location(&self) -> EntityLocation
pub fn location(&self) -> EntityLocation
Gets metadata indicating the location where the current entity is stored.
Sourcepub fn archetype(&self) -> &Archetype
pub fn archetype(&self) -> &Archetype
Returns the archetype that the current entity belongs to.
Sourcepub fn contains<T>(&self) -> boolwhere
T: Component,
pub fn contains<T>(&self) -> boolwhere
T: Component,
Returns true if the current entity has a component of type T.
Otherwise, this returns false.
§Notes
If you do not know the concrete type of a component, consider using
Self::contains_id or Self::contains_type_id.
Sourcepub fn contains_id(&self, component_id: ComponentId) -> bool
pub fn contains_id(&self, component_id: ComponentId) -> bool
Returns true if the current entity has a component identified by component_id.
Otherwise, this returns false.
§Notes
- If you know the concrete type of the component, you should prefer
Self::contains. - If you know the component’s
TypeIdbut not itsComponentId, consider usingSelf::contains_type_id.
Sourcepub fn contains_type_id(&self, type_id: TypeId) -> bool
pub fn contains_type_id(&self, type_id: TypeId) -> bool
Returns true if the current entity has a component with the type identified by type_id.
Otherwise, this returns false.
§Notes
- If you know the concrete type of the component, you should prefer
Self::contains. - If you have a
ComponentIdinstead of aTypeId, consider usingSelf::contains_id.
Sourcepub fn get<T>(&self) -> Option<&'w T>where
T: Component,
pub fn get<T>(&self) -> Option<&'w T>where
T: Component,
Gets access to the component of type T for the current entity.
Returns None if the entity does not have a component of type T.
Sourcepub fn get_ref<T>(&self) -> Option<Ref<'w, T>>where
T: Component,
pub fn get_ref<T>(&self) -> Option<Ref<'w, T>>where
T: Component,
Gets access to the component of type T for the current entity,
including change detection information as a Ref.
Returns None if the entity does not have a component of type T.
Sourcepub fn get_change_ticks<T>(&self) -> Option<ComponentTicks>where
T: Component,
pub fn get_change_ticks<T>(&self) -> Option<ComponentTicks>where
T: Component,
Retrieves the change ticks for the given component. This can be useful for implementing change detection in custom runtimes.
Sourcepub fn get_change_ticks_by_id(
&self,
component_id: ComponentId,
) -> Option<ComponentTicks>
pub fn get_change_ticks_by_id( &self, component_id: ComponentId, ) -> Option<ComponentTicks>
Retrieves the change ticks for the given ComponentId. This can be useful for implementing change
detection in custom runtimes.
You should prefer to use the typed API Self::get_change_ticks where possible and only
use this in cases where the actual component types are not known at
compile time.
Sourcepub fn get_by_id(&self, component_id: ComponentId) -> Option<Ptr<'w>>
pub fn get_by_id(&self, component_id: ComponentId) -> Option<Ptr<'w>>
Gets the component of the given ComponentId from the entity.
You should prefer to use the typed API Self::get where possible and only
use this in cases where the actual component types are not known at
compile time.
Unlike FilteredEntityRef::get, this returns a raw pointer to the component,
which is only valid while the FilteredEntityRef is alive.
Sourcepub fn spawned_by(&self) -> MaybeLocation
pub fn spawned_by(&self) -> MaybeLocation
Returns the source code location from which this entity has been spawned.
Sourcepub fn spawn_tick(&self) -> Tick
pub fn spawn_tick(&self) -> Tick
Returns the Tick at which this entity has been spawned.
Trait Implementations§
Source§impl<'w, 's> Clone for FilteredEntityRef<'w, 's>
impl<'w, 's> Clone for FilteredEntityRef<'w, 's>
Source§fn clone(&self) -> FilteredEntityRef<'w, 's>
fn clone(&self) -> FilteredEntityRef<'w, 's>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ContainsEntity for FilteredEntityRef<'_, '_>
impl ContainsEntity for FilteredEntityRef<'_, '_>
Source§impl<'a> From<&'a EntityMut<'_>> for FilteredEntityRef<'a, 'static>
impl<'a> From<&'a EntityMut<'_>> for FilteredEntityRef<'a, 'static>
Source§fn from(entity: &'a EntityMut<'_>) -> FilteredEntityRef<'a, 'static>
fn from(entity: &'a EntityMut<'_>) -> FilteredEntityRef<'a, 'static>
Source§impl<'a> From<&'a EntityRef<'_>> for FilteredEntityRef<'a, 'static>
impl<'a> From<&'a EntityRef<'_>> for FilteredEntityRef<'a, 'static>
Source§fn from(entity: &'a EntityRef<'_>) -> FilteredEntityRef<'a, 'static>
fn from(entity: &'a EntityRef<'_>) -> FilteredEntityRef<'a, 'static>
Source§impl<'w, 's, B> From<&'w EntityRefExcept<'_, 's, B>> for FilteredEntityRef<'w, 's>where
B: Bundle,
impl<'w, 's, B> From<&'w EntityRefExcept<'_, 's, B>> for FilteredEntityRef<'w, 's>where
B: Bundle,
Source§fn from(value: &'w EntityRefExcept<'_, 's, B>) -> FilteredEntityRef<'w, 's>
fn from(value: &'w EntityRefExcept<'_, 's, B>) -> FilteredEntityRef<'w, 's>
Source§impl<'a> From<&'a EntityWorldMut<'_>> for FilteredEntityRef<'a, 'static>
impl<'a> From<&'a EntityWorldMut<'_>> for FilteredEntityRef<'a, 'static>
Source§fn from(entity: &'a EntityWorldMut<'_>) -> FilteredEntityRef<'a, 'static>
fn from(entity: &'a EntityWorldMut<'_>) -> FilteredEntityRef<'a, 'static>
Source§impl<'w, 's> From<&'w FilteredEntityMut<'_, 's>> for FilteredEntityRef<'w, 's>
impl<'w, 's> From<&'w FilteredEntityMut<'_, 's>> for FilteredEntityRef<'w, 's>
Source§fn from(entity: &'w FilteredEntityMut<'_, 's>) -> FilteredEntityRef<'w, 's>
fn from(entity: &'w FilteredEntityMut<'_, 's>) -> FilteredEntityRef<'w, 's>
Source§impl<'a> From<EntityMut<'a>> for FilteredEntityRef<'a, 'static>
impl<'a> From<EntityMut<'a>> for FilteredEntityRef<'a, 'static>
Source§fn from(entity: EntityMut<'a>) -> FilteredEntityRef<'a, 'static>
fn from(entity: EntityMut<'a>) -> FilteredEntityRef<'a, 'static>
Source§impl<'a> From<EntityRef<'a>> for FilteredEntityRef<'a, 'static>
impl<'a> From<EntityRef<'a>> for FilteredEntityRef<'a, 'static>
Source§fn from(entity: EntityRef<'a>) -> FilteredEntityRef<'a, 'static>
fn from(entity: EntityRef<'a>) -> FilteredEntityRef<'a, 'static>
Source§impl<'a> From<EntityWorldMut<'a>> for FilteredEntityRef<'a, 'static>
impl<'a> From<EntityWorldMut<'a>> for FilteredEntityRef<'a, 'static>
Source§fn from(entity: EntityWorldMut<'a>) -> FilteredEntityRef<'a, 'static>
fn from(entity: EntityWorldMut<'a>) -> FilteredEntityRef<'a, 'static>
Source§impl<'w, 's> From<FilteredEntityMut<'w, 's>> for FilteredEntityRef<'w, 's>
impl<'w, 's> From<FilteredEntityMut<'w, 's>> for FilteredEntityRef<'w, 's>
Source§fn from(entity: FilteredEntityMut<'w, 's>) -> FilteredEntityRef<'w, 's>
fn from(entity: FilteredEntityMut<'w, 's>) -> FilteredEntityRef<'w, 's>
Source§impl Hash for FilteredEntityRef<'_, '_>
impl Hash for FilteredEntityRef<'_, '_>
Source§impl Ord for FilteredEntityRef<'_, '_>
impl Ord for FilteredEntityRef<'_, '_>
Source§fn cmp(&self, other: &FilteredEntityRef<'_, '_>) -> Ordering
fn cmp(&self, other: &FilteredEntityRef<'_, '_>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for FilteredEntityRef<'_, '_>
impl PartialEq for FilteredEntityRef<'_, '_>
Source§impl PartialOrd for FilteredEntityRef<'_, '_>
impl PartialOrd for FilteredEntityRef<'_, '_>
Source§fn partial_cmp(&self, other: &FilteredEntityRef<'_, '_>) -> Option<Ordering>
fn partial_cmp(&self, other: &FilteredEntityRef<'_, '_>) -> Option<Ordering>
FilteredEntityRef’s comparison trait implementations match the underlying Entity,
and cannot discern between different worlds.
Source§impl QueryData for FilteredEntityRef<'_, '_>
SAFETY: Self is the same as Self::ReadOnly
impl QueryData for FilteredEntityRef<'_, '_>
SAFETY: Self is the same as Self::ReadOnly
Source§const IS_READ_ONLY: bool = true
const IS_READ_ONLY: bool = true
Source§type ReadOnly = FilteredEntityRef<'_, '_>
type ReadOnly = FilteredEntityRef<'_, '_>
QueryData, which satisfies the ReadOnlyQueryData trait.Source§type Item<'w, 's> = FilteredEntityRef<'w, 's>
type Item<'w, 's> = FilteredEntityRef<'w, 's>
WorldQuery
This will be the data retrieved by the query,
and is visible to the end user when calling e.g. Query<Self>::get.Source§fn shrink<'wlong, 'wshort, 's>(
item: <FilteredEntityRef<'_, '_> as QueryData>::Item<'wlong, 's>,
) -> <FilteredEntityRef<'_, '_> as QueryData>::Item<'wshort, 's>where
'wlong: 'wshort,
fn shrink<'wlong, 'wshort, 's>(
item: <FilteredEntityRef<'_, '_> as QueryData>::Item<'wlong, 's>,
) -> <FilteredEntityRef<'_, '_> as QueryData>::Item<'wshort, 's>where
'wlong: 'wshort,
Source§fn provide_extra_access(
state: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::State,
access: &mut Access,
available_access: &Access,
)
fn provide_extra_access( state: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::State, access: &mut Access, available_access: &Access, )
update_component_access.
Implementations may add additional access that is a subset of available_access
and does not conflict with anything in access,
and must update access to include that access. Read moreSource§unsafe fn fetch<'w, 's>(
access: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State,
fetch: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>,
entity: Entity,
_table_row: TableRow,
) -> <FilteredEntityRef<'_, '_> as QueryData>::Item<'w, 's>
unsafe fn fetch<'w, 's>( access: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State, fetch: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>, entity: Entity, _table_row: TableRow, ) -> <FilteredEntityRef<'_, '_> as QueryData>::Item<'w, 's>
Self::Item for either the given entity in the current Table,
or for the given entity in the current Archetype. This must always be called after
WorldQuery::set_table with a table_row in the range of the current Table or after
WorldQuery::set_archetype with an entity in the current archetype.
Accesses components registered in WorldQuery::update_component_access. Read moreSource§impl<'a> TryFrom<&'a FilteredEntityRef<'_, '_>> for EntityRef<'a>
impl<'a> TryFrom<&'a FilteredEntityRef<'_, '_>> for EntityRef<'a>
Source§type Error = TryFromFilteredError
type Error = TryFromFilteredError
Source§fn try_from(
entity: &'a FilteredEntityRef<'_, '_>,
) -> Result<EntityRef<'a>, <EntityRef<'a> as TryFrom<&'a FilteredEntityRef<'_, '_>>>::Error>
fn try_from( entity: &'a FilteredEntityRef<'_, '_>, ) -> Result<EntityRef<'a>, <EntityRef<'a> as TryFrom<&'a FilteredEntityRef<'_, '_>>>::Error>
Source§impl<'a> TryFrom<FilteredEntityRef<'a, '_>> for EntityRef<'a>
impl<'a> TryFrom<FilteredEntityRef<'a, '_>> for EntityRef<'a>
Source§type Error = TryFromFilteredError
type Error = TryFromFilteredError
Source§fn try_from(
entity: FilteredEntityRef<'a, '_>,
) -> Result<EntityRef<'a>, <EntityRef<'a> as TryFrom<FilteredEntityRef<'a, '_>>>::Error>
fn try_from( entity: FilteredEntityRef<'a, '_>, ) -> Result<EntityRef<'a>, <EntityRef<'a> as TryFrom<FilteredEntityRef<'a, '_>>>::Error>
Source§impl WorldQuery for FilteredEntityRef<'_, '_>
SAFETY: The accesses of Self::ReadOnly are a subset of the accesses of Self
impl WorldQuery for FilteredEntityRef<'_, '_>
SAFETY: The accesses of Self::ReadOnly are a subset of the accesses of Self
Source§const IS_DENSE: bool = false
const IS_DENSE: bool = false
Source§type Fetch<'w> = EntityFetch<'w>
type Fetch<'w> = EntityFetch<'w>
WorldQuery to compute Self::Item for each entity.Source§type State = Access
type State = Access
Self::Fetch. This will be cached inside QueryState,
so it is best to move as much data / computation here as possible to reduce the cost of
constructing Self::Fetch.Source§fn shrink_fetch<'wlong, 'wshort>(
fetch: <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'wlong>,
) -> <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'wshort>where
'wlong: 'wshort,
fn shrink_fetch<'wlong, 'wshort>(
fetch: <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'wlong>,
) -> <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'wshort>where
'wlong: 'wshort,
Source§unsafe fn init_fetch<'w, 's>(
world: UnsafeWorldCell<'w>,
_state: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State,
last_run: Tick,
this_run: Tick,
) -> <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>
unsafe fn init_fetch<'w, 's>( world: UnsafeWorldCell<'w>, _state: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State, last_run: Tick, this_run: Tick, ) -> <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>
Self::Fetch,
by combining data from the World with the cached Self::State.
Readonly accesses resources registered in WorldQuery::update_component_access. Read moreSource§unsafe fn set_archetype<'w, 's>(
_fetch: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>,
_state: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State,
_: &'w Archetype,
_table: &Table,
)
unsafe fn set_archetype<'w, 's>( _fetch: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>, _state: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State, _: &'w Archetype, _table: &Table, )
Archetype. This will always be called on
archetypes that match this WorldQuery. Read moreSource§unsafe fn set_table<'w, 's>(
_fetch: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>,
_state: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State,
_: &'w Table,
)
unsafe fn set_table<'w, 's>( _fetch: &mut <FilteredEntityRef<'_, '_> as WorldQuery>::Fetch<'w>, _state: &'s <FilteredEntityRef<'_, '_> as WorldQuery>::State, _: &'w Table, )
Table. This will always be called on tables
that match this WorldQuery. Read moreSource§fn update_component_access(
state: &<FilteredEntityRef<'_, '_> as WorldQuery>::State,
filtered_access: &mut FilteredAccess,
)
fn update_component_access( state: &<FilteredEntityRef<'_, '_> as WorldQuery>::State, filtered_access: &mut FilteredAccess, )
Source§fn init_state(
_world: &mut World,
) -> <FilteredEntityRef<'_, '_> as WorldQuery>::State
fn init_state( _world: &mut World, ) -> <FilteredEntityRef<'_, '_> as WorldQuery>::State
State for this WorldQuery type.Source§fn get_state(
_components: &Components,
) -> Option<<FilteredEntityRef<'_, '_> as WorldQuery>::State>
fn get_state( _components: &Components, ) -> Option<<FilteredEntityRef<'_, '_> as WorldQuery>::State>
Source§fn matches_component_set(
_state: &<FilteredEntityRef<'_, '_> as WorldQuery>::State,
_set_contains_id: &impl Fn(ComponentId) -> bool,
) -> bool
fn matches_component_set( _state: &<FilteredEntityRef<'_, '_> as WorldQuery>::State, _set_contains_id: &impl Fn(ComponentId) -> bool, ) -> bool
impl<'w, 's> Copy for FilteredEntityRef<'w, 's>
impl EntityEquivalent for FilteredEntityRef<'_, '_>
impl Eq for FilteredEntityRef<'_, '_>
impl ReadOnlyQueryData for FilteredEntityRef<'_, '_>
SAFETY: Access is read-only.
Auto Trait Implementations§
impl<'w, 's> Freeze for FilteredEntityRef<'w, 's>
impl<'w, 's> !RefUnwindSafe for FilteredEntityRef<'w, 's>
impl<'w, 's> Send for FilteredEntityRef<'w, 's>
impl<'w, 's> Sync for FilteredEntityRef<'w, 's>
impl<'w, 's> Unpin for FilteredEntityRef<'w, 's>
impl<'w, 's> !UnwindSafe for FilteredEntityRef<'w, 's>
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more