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: Component>(&self) -> bool
pub fn contains<T: Component>(&self) -> bool
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: Component>(&self) -> Option<&'w T>
pub fn get<T: Component>(&self) -> Option<&'w T>
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: Component>(&self) -> Option<Ref<'w, T>>
pub fn get_ref<T: Component>(&self) -> Option<Ref<'w, T>>
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: Component>(&self) -> Option<ComponentTicks>
pub fn get_change_ticks<T: Component>(&self) -> Option<ComponentTicks>
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§impl<'a> From<&'a EntityRef<'_>> for FilteredEntityRef<'a, 'static>
impl<'a> From<&'a EntityRef<'_>> for FilteredEntityRef<'a, 'static>
Source§impl<'w, 's, B: Bundle> From<&'w EntityRefExcept<'_, 's, B>> for FilteredEntityRef<'w, 's>
impl<'w, 's, B: Bundle> From<&'w EntityRefExcept<'_, 's, B>> for FilteredEntityRef<'w, 's>
Source§fn from(value: &'w EntityRefExcept<'_, 's, B>) -> Self
fn from(value: &'w EntityRefExcept<'_, 's, B>) -> Self
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<'_>) -> Self
fn from(entity: &'a EntityWorldMut<'_>) -> Self
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>) -> Self
fn from(entity: &'w FilteredEntityMut<'_, 's>) -> Self
Source§impl<'a> From<EntityMut<'a>> for FilteredEntityRef<'a, 'static>
impl<'a> From<EntityMut<'a>> for FilteredEntityRef<'a, 'static>
Source§impl<'a> From<EntityRef<'a>> for FilteredEntityRef<'a, 'static>
impl<'a> From<EntityRef<'a>> for 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>) -> Self
fn from(entity: EntityWorldMut<'a>) -> Self
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>) -> Self
fn from(entity: FilteredEntityMut<'w, 's>) -> Self
Source§impl Hash for FilteredEntityRef<'_, '_>
impl Hash for FilteredEntityRef<'_, '_>
Source§impl Ord for FilteredEntityRef<'_, '_>
impl Ord for FilteredEntityRef<'_, '_>
Source§impl PartialEq for FilteredEntityRef<'_, '_>
impl PartialEq for FilteredEntityRef<'_, '_>
Source§impl PartialOrd for FilteredEntityRef<'_, '_>
impl PartialOrd for FilteredEntityRef<'_, '_>
Source§fn partial_cmp(&self, other: &Self) -> Option<Ordering>
fn partial_cmp(&self, other: &Self) -> 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, 'wshort, 's>(
item: Self::Item<'wlong, 's>,
) -> Self::Item<'wshort, 's>
fn shrink<'wlong: 'wshort, 'wshort, 's>( item: Self::Item<'wlong, 's>, ) -> Self::Item<'wshort, 's>
Source§fn provide_extra_access(
state: &mut Self::State,
access: &mut Access,
available_access: &Access,
)
fn provide_extra_access( state: &mut Self::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 Self::State,
fetch: &mut Self::Fetch<'w>,
entity: Entity,
_table_row: TableRow,
) -> Self::Item<'w, 's>
unsafe fn fetch<'w, 's>( access: &'s Self::State, fetch: &mut Self::Fetch<'w>, entity: Entity, _table_row: TableRow, ) -> Self::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§impl<'a> TryFrom<FilteredEntityRef<'a, '_>> for EntityRef<'a>
impl<'a> TryFrom<FilteredEntityRef<'a, '_>> for EntityRef<'a>
Source§type Error = TryFromFilteredError
type Error = TryFromFilteredError
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, 'wshort>(
fetch: Self::Fetch<'wlong>,
) -> Self::Fetch<'wshort>
fn shrink_fetch<'wlong: 'wshort, 'wshort>( fetch: Self::Fetch<'wlong>, ) -> Self::Fetch<'wshort>
Source§unsafe fn init_fetch<'w, 's>(
world: UnsafeWorldCell<'w>,
_state: &'s Self::State,
last_run: Tick,
this_run: Tick,
) -> Self::Fetch<'w>
unsafe fn init_fetch<'w, 's>( world: UnsafeWorldCell<'w>, _state: &'s Self::State, last_run: Tick, this_run: Tick, ) -> Self::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 Self::Fetch<'w>,
_state: &'s Self::State,
_: &'w Archetype,
_table: &Table,
)
unsafe fn set_archetype<'w, 's>( _fetch: &mut Self::Fetch<'w>, _state: &'s Self::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 Self::Fetch<'w>,
_state: &'s Self::State,
_: &'w Table,
)
unsafe fn set_table<'w, 's>( _fetch: &mut Self::Fetch<'w>, _state: &'s Self::State, _: &'w Table, )
Table. This will always be called on tables
that match this WorldQuery. Read moreSource§fn update_component_access(
state: &Self::State,
filtered_access: &mut FilteredAccess,
)
fn update_component_access( state: &Self::State, filtered_access: &mut FilteredAccess, )
Source§fn init_state(_world: &mut World) -> Self::State
fn init_state(_world: &mut World) -> Self::State
State for this WorldQuery type.Source§fn matches_component_set(
_state: &Self::State,
_set_contains_id: &impl Fn(ComponentId) -> bool,
) -> bool
fn matches_component_set( _state: &Self::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> 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> 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.