Struct bevy::ecs::entity::Entities

pub struct Entities { /* private fields */ }
Expand description

A World’s internal metadata store on all of its entities.

Contains metadata on:

  • The generation of every entity.
  • The alive/dead status of a particular entity. (i.e. “has entity 3 been despawned?”)
  • The location of the entity’s components in memory (via EntityLocation)

Implementations§

§

impl Entities

pub fn reserve_entities(&self, count: u32) -> ReserveEntitiesIterator<'_>

Reserve entity IDs concurrently.

Storage for entity generation and location is lazily allocated by calling flush.

pub fn reserve_entity(&self) -> Entity

Reserve one entity ID concurrently.

Equivalent to self.reserve_entities(1).next().unwrap(), but more efficient.

pub fn alloc(&mut self) -> Entity

Allocate an entity ID directly.

pub fn alloc_at(&mut self, entity: Entity) -> Option<EntityLocation>

Allocate a specific entity ID, overwriting its generation.

Returns the location of the entity currently using the given ID, if any. Location should be written immediately.

pub fn free(&mut self, entity: Entity) -> Option<EntityLocation>

Destroy an entity, allowing it to be reused.

Must not be called while reserved entities are awaiting flush().

pub fn reserve(&mut self, additional: u32)

Ensure at least n allocations can succeed without reallocating.

pub fn contains(&self, entity: Entity) -> bool

Returns true if the Entities contains entity.

pub fn clear(&mut self)

Clears all Entity from the World.

pub fn get(&self, entity: Entity) -> Option<EntityLocation>

Returns the location of an Entity. Note: for pending entities, returns Some(EntityLocation::INVALID).

pub fn resolve_from_id(&self, index: u32) -> Option<Entity>

Get the Entity with a given id, if it exists in this Entities collection Returns None if this Entity is outside of the range of currently reserved Entities

Note: This method may return Entities which are currently free Note that contains will correctly return false for freed entities, since it checks the generation

pub unsafe fn flush(&mut self, init: impl FnMut(Entity, &mut EntityLocation))

Allocates space for entities previously reserved with reserve_entity or reserve_entities, then initializes each one using the supplied function.

§Safety

Flush must set the entity location to the correct ArchetypeId for the given Entity each time init is called. This can be ArchetypeId::INVALID, provided the Entity has not been assigned to an Archetype.

Note: freshly-allocated entities (ones which don’t come from the pending list) are guaranteed to be initialized with the invalid archetype.

pub fn flush_as_invalid(&mut self)

Flushes all reserved entities to an “invalid” state. Attempting to retrieve them will return None unless they are later populated with a valid archetype.

pub unsafe fn flush_and_reserve_invalid_assuming_no_entities( &mut self, count: usize )

§Safety

This function is safe if and only if the world this Entities is on has no entities.

pub fn total_count(&self) -> usize

The count of all entities in the World that have ever been allocated including the entities that are currently freed.

This does not include entities that have been reserved but have never been allocated yet.

pub fn len(&self) -> u32

The count of currently allocated entities.

pub fn is_empty(&self) -> bool

Checks if any entity is currently active.

Trait Implementations§

§

impl Debug for Entities

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'a> SystemParam for &'a Entities

§

type State = ()

Used to store data which persists across invocations of a system.
§

type Item<'w, 's> = &'w Entities

The item type returned when constructing this system param. The value of this associated type should be Self, instantiated with new lifetimes. Read more
§

fn init_state( _world: &mut World, _system_meta: &mut SystemMeta ) -> <&'a Entities as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
§

unsafe fn get_param<'w, 's>( _state: &'s mut <&'a Entities as SystemParam>::State, _system_meta: &SystemMeta, world: UnsafeWorldCell<'w>, _change_tick: Tick ) -> <&'a Entities as SystemParam>::Item<'w, 's>

Creates a parameter to be passed into a SystemParamFunction. Read more
§

unsafe fn new_archetype( state: &mut Self::State, archetype: &Archetype, system_meta: &mut SystemMeta )

For the specified Archetype, registers the components accessed by this SystemParam (if applicable).a Read more
§

fn apply(state: &mut Self::State, system_meta: &SystemMeta, world: &mut World)

Applies any deferred mutations stored in this SystemParam’s state. This is used to apply Commands during apply_deferred.
§

impl<'a> ReadOnlySystemParam for &'a Entities

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ConditionalSend for T
where T: Send,

§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

§

impl<T> Settings for T
where T: 'static + Send + Sync,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,