Struct entity_data::entity_storage::EntityStorage
source · pub struct EntityStorage { /* private fields */ }Expand description
A container of entities.
Implementations§
source§impl EntityStorage
impl EntityStorage
sourcepub fn new() -> EntityStorage
pub fn new() -> EntityStorage
Creates an empty EntityStorage.
sourcepub fn add<S: ArchetypeState>(&mut self, state: S) -> EntityId
pub fn add<S: ArchetypeState>(&mut self, state: S) -> EntityId
Creates a new entity and returns its identifier.
sourcepub fn get_archetype<A: StaticArchetype>(&self) -> Option<&ArchetypeStorage>
pub fn get_archetype<A: StaticArchetype>(&self) -> Option<&ArchetypeStorage>
Returns a reference to the specified archetype.
sourcepub fn get_archetype_mut<A: StaticArchetype>(
&mut self
) -> Option<&mut ArchetypeStorage>
pub fn get_archetype_mut<A: StaticArchetype>( &mut self ) -> Option<&mut ArchetypeStorage>
Returns a mutable reference to the specified archetype.
sourcepub fn type_id_to_archetype_id(&self, type_id: &TypeId) -> Option<ArchetypeId>
pub fn type_id_to_archetype_id(&self, type_id: &TypeId) -> Option<ArchetypeId>
Maps the specified TypeId to respective ArchetypeId.
If the storage doesn’t contain an archetype of type type_id, it returns None.
sourcepub fn get_archetype_by_id(
&mut self,
id: ArchetypeId
) -> Option<&ArchetypeStorage>
pub fn get_archetype_by_id( &mut self, id: ArchetypeId ) -> Option<&ArchetypeStorage>
Returns a reference to the specified archetype.
sourcepub fn get_mut_archetype_by_id(
&mut self,
id: ArchetypeId
) -> Option<&mut ArchetypeStorage>
pub fn get_mut_archetype_by_id( &mut self, id: ArchetypeId ) -> Option<&mut ArchetypeStorage>
Returns a mutable reference to the specified archetype.
sourcepub fn contains(&self, entity: &EntityId) -> bool
pub fn contains(&self, entity: &EntityId) -> bool
Returns true if the storage contains the specified entity.
sourcepub fn get<C: Component>(&self, entity: &EntityId) -> Option<&C>
pub fn get<C: Component>(&self, entity: &EntityId) -> Option<&C>
Returns a reference to the component C of the specified entity.
sourcepub fn get_mut<C: Component>(&mut self, entity: &EntityId) -> Option<&mut C>
pub fn get_mut<C: Component>(&mut self, entity: &EntityId) -> Option<&mut C>
Returns a mutable reference to the component C of the specified entity.
sourcepub fn entry(&self, entity: &EntityId) -> Option<Entry<'_>>
pub fn entry(&self, entity: &EntityId) -> Option<Entry<'_>>
Returns an entry of entity in the corresponding archetype.
sourcepub fn entry_mut(&mut self, entity: &EntityId) -> Option<EntryMut<'_>>
pub fn entry_mut(&mut self, entity: &EntityId) -> Option<EntryMut<'_>>
Returns a mutable entry of entity in the corresponding archetype.
sourcepub fn remove(&mut self, entity: &EntityId) -> bool
pub fn remove(&mut self, entity: &EntityId) -> bool
Removes an entity from the storage. Returns true if the entity was present in the storage.
pub fn entities(&self) -> AllEntities<'_>
sourcepub fn n_archetypes(&mut self) -> usize
pub fn n_archetypes(&mut self) -> usize
Returns the number of entities in the storage.
sourcepub fn count_entities(&self) -> usize
pub fn count_entities(&self) -> usize
Returns the number of entities in the storage.
source§impl EntityStorage
impl EntityStorage
sourcepub fn access(&mut self) -> SystemAccess<'_>
pub fn access(&mut self) -> SystemAccess<'_>
Provides access to all components. Allows simultaneous mutable access to multiple components.
sourcepub fn dispatch<'a>(&self, systems: impl AsMut<[System<'a>]>)
pub fn dispatch<'a>(&self, systems: impl AsMut<[System<'a>]>)
Dispatches systems sequentially. For parallel execution,
see dispatch_par (requires rayon feature).
Example
use entity_data::{EntityId, EntityStorage, System, SystemHandler};
use entity_data::system::SystemAccess;
use macros::Archetype;
#[derive(Default, Debug)]
struct Position {
x: f32,
y: f32,
}
#[derive(Archetype)]
struct Dog {
pos: Position,
}
let mut storage = EntityStorage::new();
let dog0 = storage.add(Dog { pos: Default::default() });
let dog1 = storage.add(Dog { pos: Position { x: 3.0, y: 5.0 } });
struct PositionsPrintSystem {
to_process: Vec<EntityId>,
}
impl SystemHandler for PositionsPrintSystem {
fn run(&mut self, data: SystemAccess) {
let positions = data.component::<Position>();
for entity in &self.to_process {
println!("{:?}", positions.get(entity));
}
}
}
let mut sys = PositionsPrintSystem {
to_process: vec![dog0, dog1]
};
storage.dispatch(&mut [System::new(&mut sys).with::<Position>()]);Trait Implementations§
source§impl Default for EntityStorage
impl Default for EntityStorage
source§fn default() -> EntityStorage
fn default() -> EntityStorage
Auto Trait Implementations§
impl !RefUnwindSafe for EntityStorage
impl Send for EntityStorage
impl Sync for EntityStorage
impl Unpin for EntityStorage
impl UnwindSafe for EntityStorage
Blanket Implementations§
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§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.§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.§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.§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.§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.§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.§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.§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.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§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 more§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 more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_mut() into the pipe
function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target of a value. Read more§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.§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.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.