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

Entities holds the EntityIds to all entities: living, removed and dead.

A living entity is an entity currently present, with or without component.

Removed and dead entities don’t have any component.

The big difference is that removed ones can become alive again.

The life cycle of an entity looks like this:

Generation -> Deletion -> Dead
          ⬑–––––↵

Implementations

Returns true if entity matches a living entity.

Adds component to entity, multiple components can be added at the same time using a tuple.
Entities is only borrowed immutably.

Panics
  • entity is not alive.
Example
use shipyard::{EntitiesView, ViewMut, World};

let mut world = World::new();

let entity = world.add_entity(());

let (entities, mut u32s) = world.borrow::<(EntitiesView, ViewMut<u32>)>().unwrap();

entities.add_component(entity, &mut u32s, 0);

Deletes an entity, returns true if the entity was alive.
If the entity has components, they will not be deleted and still be accessible using this id.

Stores component in a new entity and returns its EntityId.
Multiple components can be added at the same time using a tuple.

Example:
use shipyard::{EntitiesViewMut, ViewMut, World};

let world = World::new();

let (mut entities, mut usizes, mut u32s) = world
    .borrow::<(EntitiesViewMut, ViewMut<usize>, ViewMut<u32>)>()
    .unwrap();

let entity = entities.add_entity((&mut usizes, &mut u32s), (0, 1));
assert_eq!(usizes[entity], 0);
assert_eq!(u32s[entity], 1);

Creates multiple new entities and returns an iterator yielding the new EntityIds.
Multiple components can be added at the same time using a tuple.

Example
use shipyard::{EntitiesViewMut, ViewMut, World};

let world = World::new();

let (mut entities, mut usizes, mut u32s) = world
    .borrow::<(EntitiesViewMut, ViewMut<usize>, ViewMut<u32>)>()
    .unwrap();

let entity0 = entities.bulk_add_entity((), (0..1).map(|_| {})).next();
let entity1 = entities.bulk_add_entity(&mut u32s, 1..2).next();
let new_entities =
    entities.bulk_add_entity((&mut u32s, &mut usizes), (10..20).map(|i| (i as u32, i)));

Creates an iterator over all entities.

Make the given entity alive.
Does nothing if an entity with a greater generation is already at this index.
Returns true if the entity is successfully spawned.

Trait Implementations

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

Creates an iterator from a value. Read more

Deletes all components of this storage.

Returns how much memory this storage uses.

Casts to &dyn Any.

Casts to &mut dyn Any.

Deletes an entity from this storage.

Returns the storage’s name.

Returns a SparseSet’s internal SparseArray. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

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

Should always be Self

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

Checks if self is actually part of its subset T (and can be converted to it).

Use with care! Same as self.to_subset but without any property checks. Always succeeds.

The inclusion map: converts self to the equivalent element of its superset.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.