pub struct FilteredAccess { /* private fields */ }Expand description
An Access that has been filtered to include and exclude certain combinations of elements.
Used internally to statically check if queries are disjoint.
Subtle: a read or write in access should not be considered to imply a
with access.
For example consider Query<Option<&T>> this only has a read of T as doing
otherwise would allow for queries to be considered disjoint when they shouldn’t:
Query<(&mut T, Option<&U>)>read/writeT, readU, withUQuery<&mut T, Without<U>>read/writeT, withoutUfrom this we could reasonably conclude that the queries are disjoint but they aren’t.
In order to solve this the actual access that Query<(&mut T, Option<&U>)> has
is read/write T, read U. It must still have a read U access otherwise the following
queries would be incorrectly considered disjoint:
Query<&mut T>read/writeTQuery<Option<&T>>accesses nothing
See comments the WorldQuery impls of AnyOf/Option/Or for more information.
Implementations§
Source§impl FilteredAccess
impl FilteredAccess
Sourcepub fn matches_everything() -> Self
pub fn matches_everything() -> Self
Returns a FilteredAccess which has no access and matches everything.
This is the equivalent of a TRUE logic atom.
Sourcepub fn matches_nothing() -> Self
pub fn matches_nothing() -> Self
Returns a FilteredAccess which has no access and matches nothing.
This is the equivalent of a FALSE logic atom.
Sourcepub fn access_mut(&mut self) -> &mut Access
pub fn access_mut(&mut self) -> &mut Access
Returns a mutable reference to the underlying unfiltered access.
Sourcepub fn add_component_read(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: use FilteredAccess::add_read
pub fn add_component_read(&mut self, index: ComponentId)
use FilteredAccess::add_read
Adds access to the component given by index.
Sourcepub fn add_read(&mut self, index: ComponentId)
pub fn add_read(&mut self, index: ComponentId)
Adds access to the component given by index.
Sourcepub fn add_component_write(&mut self, index: ComponentId)
👎Deprecated since 0.19.0: use FilteredAccess::add_write
pub fn add_component_write(&mut self, index: ComponentId)
use FilteredAccess::add_write
Adds exclusive access to the component given by index.
Sourcepub fn add_write(&mut self, index: ComponentId)
pub fn add_write(&mut self, index: ComponentId)
Adds exclusive access to the component given by index.
Sourcepub fn and_with(&mut self, index: ComponentId)
pub fn and_with(&mut self, index: ComponentId)
Adds a With filter: corresponds to a conjunction (AND) operation.
Suppose we begin with Or<(With<A>, With<B>)>, which is represented by an array of two AccessFilter instances.
Adding AND With<C> via this method transforms it into the equivalent of Or<((With<A>, With<C>), (With<B>, With<C>))>.
Sourcepub fn and_without(&mut self, index: ComponentId)
pub fn and_without(&mut self, index: ComponentId)
Adds a Without filter: corresponds to a conjunction (AND) operation.
Suppose we begin with Or<(With<A>, With<B>)>, which is represented by an array of two AccessFilter instances.
Adding AND Without<C> via this method transforms it into the equivalent of Or<((With<A>, Without<C>), (With<B>, Without<C>))>.
Sourcepub fn append_or(&mut self, other: &FilteredAccess)
pub fn append_or(&mut self, other: &FilteredAccess)
Appends an array of filters: corresponds to a disjunction (OR) operation.
As the underlying array of filters represents a disjunction,
where each element (AccessFilters) represents a conjunction,
we can simply append to the array.
Sourcepub fn extend_access(&mut self, other: &FilteredAccess)
pub fn extend_access(&mut self, other: &FilteredAccess)
Adds all of the accesses from other to self.
Sourcepub fn is_compatible(&self, other: &FilteredAccess) -> bool
pub fn is_compatible(&self, other: &FilteredAccess) -> bool
Returns true if this and other can be active at the same time.
Sourcepub fn get_conflicts(&self, other: &FilteredAccess) -> AccessConflicts
pub fn get_conflicts(&self, other: &FilteredAccess) -> AccessConflicts
Returns a vector of elements that this and other cannot access at the same time.
Sourcepub fn extend(&mut self, other: &FilteredAccess)
pub fn extend(&mut self, other: &FilteredAccess)
Adds all access and filters from other.
Corresponds to a conjunction operation (AND) for filters.
Extending Or<(With<A>, Without<B>)> with Or<(With<C>, Without<D>)> will result in
Or<((With<A>, With<C>), (With<A>, Without<D>), (Without<B>, With<C>), (Without<B>, Without<D>))>.
Sourcepub fn read_all(&mut self)
pub fn read_all(&mut self)
Sets the underlying unfiltered access as having access to all components.
Sourcepub fn write_all(&mut self)
pub fn write_all(&mut self)
Sets the underlying unfiltered access as having mutable access to all components.
Sourcepub fn read_all_components(&mut self)
👎Deprecated since 0.19.0: use FilteredAccess::read_all
pub fn read_all_components(&mut self)
use FilteredAccess::read_all
Sets the underlying unfiltered access as having access to all components.
Sourcepub fn write_all_components(&mut self)
👎Deprecated since 0.19.0: use FilteredAccess::write_all
pub fn write_all_components(&mut self)
use FilteredAccess::write_all
Sets the underlying unfiltered access as having mutable access to all components.
Sourcepub fn is_subset(&self, other: &FilteredAccess) -> bool
pub fn is_subset(&self, other: &FilteredAccess) -> bool
Returns true if the set is a subset of another, i.e. other contains
at least all the values in self.
Sourcepub fn required(&self) -> &ComponentIdSet
pub fn required(&self) -> &ComponentIdSet
Returns the set of components that must be present for this access to match.
These components will also be included in the AccessFilters::with collection
for every filter in Self::filter_sets.
This is used by query transmutes to ensure that
components read by the query are present.
This will include components from query types like &C,
but not from filters like With<C>,
and not from optional data like Option<&C>.
Sourcepub fn filter_sets(&self) -> &[AccessFilters]
pub fn filter_sets(&self) -> &[AccessFilters]
The list of filters, expressed in disjunctive normal form.
This FilteredAccess will match an entity if
any of the AccessFilters matches the entity.
Sourcepub fn with_filters(&self) -> impl Iterator<Item = ComponentId> + '_
pub fn with_filters(&self) -> impl Iterator<Item = ComponentId> + '_
Returns the indices of the elements that this access filters for.
Sourcepub fn without_filters(&self) -> impl Iterator<Item = ComponentId> + '_
pub fn without_filters(&self) -> impl Iterator<Item = ComponentId> + '_
Returns the indices of the elements that this access filters out.
Sourcepub fn contains(&self, index: ComponentId) -> bool
pub fn contains(&self, index: ComponentId) -> bool
Returns true if the index is used by this FilteredAccess in filters or archetypal access.
This includes most ways to access a component, but notably excludes EntityRef and EntityMut
along with anything inside Option<T>.
Trait Implementations§
Source§impl Clone for FilteredAccess
impl Clone for FilteredAccess
Source§impl Debug for FilteredAccess
impl Debug for FilteredAccess
Source§impl Default for FilteredAccess
impl Default for FilteredAccess
impl Eq for FilteredAccess
Source§impl From<FilteredAccess> for FilteredAccessSet
impl From<FilteredAccess> for FilteredAccessSet
Source§fn from(filtered_access: FilteredAccess) -> Self
fn from(filtered_access: FilteredAccess) -> Self
Source§impl PartialEq for FilteredAccess
impl PartialEq for FilteredAccess
Source§fn eq(&self, other: &FilteredAccess) -> bool
fn eq(&self, other: &FilteredAccess) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for FilteredAccess
Auto Trait Implementations§
impl Freeze for FilteredAccess
impl RefUnwindSafe for FilteredAccess
impl Send for FilteredAccess
impl Sync for FilteredAccess
impl Unpin for FilteredAccess
impl UnsafeUnpin for FilteredAccess
impl UnwindSafe for FilteredAccess
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,
impl<T> ConditionalSend for Twhere
T: Send,
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<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> FromTemplate for T
impl<T> FromTemplate for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
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> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Source§impl<T> Template for T
impl<T> Template for T
Source§fn build_template(
&self,
_context: &mut TemplateContext<'_, '_>,
) -> Result<<T as Template>::Output, BevyError>
fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>
entity context to produce a Template::Output.Source§fn clone_template(&self) -> T
fn clone_template(&self) -> T
Clone.