Struct dynec::system::iter::EntityIterator
source · pub struct EntityIterator<A: Archetype> { /* private fields */ }
Expand description
Allows iterating all entities of an archetype.
Implementations§
source§impl<A: Archetype> EntityIterator<A>
impl<A: Archetype> EntityIterator<A>
sourcepub fn new(ealloc: Snapshot<A::RawEntity>) -> Self
pub fn new(ealloc: Snapshot<A::RawEntity>) -> Self
Constructs an instance of EntityIterator
that reads from the given allocator.
Although this function accepts an allocator shard, it actually reads the global buffer shared between shards, which is independent of the changes in the current shard. Hence, the iterator describe the state after the previous tick completes, which does not include newly initialized entities and includes those queued for deletion. This behavior is reasonable, because newly initialized entities should not be accessed at all, and those queued for deletion may have a finalizer or be given a finalizer when running later systems, so those queued for deletion are still included.
This function is typically called from the code generated by
#[system]
.
sourcepub fn entities(&self) -> impl Iterator<Item = TempRef<'_, A>>
pub fn entities(&self) -> impl Iterator<Item = TempRef<'_, A>>
Iterates over all entity IDs in this archetype.
sourcepub fn chunks(&self) -> impl Iterator<Item = TempRefChunk<'_, A>> + '_
pub fn chunks(&self) -> impl Iterator<Item = TempRefChunk<'_, A>> + '_
Iterates over all contiguous chunks of entity IDs.
sourcepub fn entities_with<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl Iterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>
pub fn entities_with<IntoZ: IntoZip<A>>( &self, zip: IntoZ ) -> impl Iterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>
Iterates over all entities, yielding the components requested.
sourcepub fn chunks_with<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl Iterator<Item = (TempRefChunk<'_, A>, <IntoZ::IntoZip as ZipChunked<A>>::Chunk)>where
IntoZ::IntoZip: ZipChunked<A>,
pub fn chunks_with<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl Iterator<Item = (TempRefChunk<'_, A>, <IntoZ::IntoZip as ZipChunked<A>>::Chunk)>where
IntoZ::IntoZip: ZipChunked<A>,
Iterates over all entities, yielding the components requested in contiguous chunks.
sourcepub fn entities_with_chunked<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl Iterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>where
IntoZ::IntoZip: ZipChunked<A>,
pub fn entities_with_chunked<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl Iterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>where
IntoZ::IntoZip: ZipChunked<A>,
Same as entities_with
,
but leverages chunked storages for better performance.
sourcepub fn par_entities_with<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl ParallelIterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>
pub fn par_entities_with<IntoZ: IntoZip<A>>( &self, zip: IntoZ ) -> impl ParallelIterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>
Iterates over all entities in parallel, yielding the components requested.
sourcepub fn par_chunks_with<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl ParallelIterator<Item = (TempRefChunk<'_, A>, <IntoZ::IntoZip as ZipChunked<A>>::Chunk)>
pub fn par_chunks_with<IntoZ: IntoZip<A>>( &self, zip: IntoZ ) -> impl ParallelIterator<Item = (TempRefChunk<'_, A>, <IntoZ::IntoZip as ZipChunked<A>>::Chunk)>
Iterates over all chunks of entities in parallel, yielding the components requested.
sourcepub fn par_entities_with_chunked<IntoZ: IntoZip<A>>(
&self,
zip: IntoZ
) -> impl ParallelIterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>
pub fn par_entities_with_chunked<IntoZ: IntoZip<A>>( &self, zip: IntoZ ) -> impl ParallelIterator<Item = (TempRef<'_, A>, <IntoZ::IntoZip as Zip<A>>::Item)>
Same as par_entities_with
,
but leverages chunked storages for better performance.
Auto Trait Implementations§
impl<A> RefUnwindSafe for EntityIterator<A>
impl<A> Send for EntityIterator<A>
impl<A> Sync for EntityIterator<A>
impl<A> Unpin for EntityIterator<A>
impl<A> UnwindSafe for EntityIterator<A>
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> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.