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::{Component, EntitiesView, ViewMut, World};

#[derive(Component)]
struct U32(u32);

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, U32(0));

Adds component to entity, multiple components can be added at the same time using a tuple.
If the entity already has this component, it won’t be replaced. Very useful if you want accurate modification tracking.
Entities is only borrowed immutably.

Returns true if the component was added.

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

#[derive(Component, PartialEq)]
struct U32(u32);

let mut world = World::new();

let entity = world.add_entity(());

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

assert!(entities.add_distinct_component(entity, &mut u32s, U32(0)));
assert!(!entities.add_distinct_component(entity, &mut u32s, U32(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::{Component, EntitiesViewMut, ViewMut, World};

#[derive(Component, Debug, PartialEq, Eq)]
struct U32(u32);

#[derive(Component, Debug, PartialEq, Eq)]
struct USIZE(usize);

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), (USIZE(0), U32(1)));
assert_eq!(usizes[entity], USIZE(0));
assert_eq!(u32s[entity], U32(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::{Component, EntitiesViewMut, ViewMut, World};

#[derive(Component)]
struct U32(u32);

#[derive(Component)]
struct USIZE(usize);

let world = World::new();

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

let new_entities =
    entities.bulk_add_entity((&mut u32s, &mut usizes), (10..20).map(|i| (U32(i as u32), USIZE(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.

Returns true if the storage is empty.

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

Clear all deletion and removal tracking data.

Clear all deletion and removal tracking data older than some timestamp.

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.

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

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

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

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.

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

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