pub struct EntitiesViewMut<'a> { /* private fields */ }Expand description
Exclusive view over Entities storage.
Methods from Deref<Target = Entities>§
Sourcepub fn is_alive(&self, entity: EntityId) -> bool
pub fn is_alive(&self, entity: EntityId) -> bool
Returns true if entity matches a living entity.
Sourcepub fn add_component<C, S: AddComponent<C>>(
&self,
entity: EntityId,
storages: S,
component: C,
)
pub fn add_component<C, S: AddComponent<C>>( &self, entity: EntityId, storages: S, component: C, )
Adds component to entity, multiple components can be added at the same time using a tuple.
Entities is only borrowed immutably.
§Panics
entityis 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));Sourcepub fn add_distinct_component<S: AddDistinctComponent>(
&self,
entity: EntityId,
storages: S,
component: S::Component,
) -> bool
pub fn add_distinct_component<S: AddDistinctComponent>( &self, entity: EntityId, storages: S, component: S::Component, ) -> bool
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
entityis 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)));Sourcepub fn delete_unchecked(&mut self, entity_id: EntityId) -> bool
pub fn delete_unchecked(&mut self, entity_id: EntityId) -> bool
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.
Sourcepub fn add_entity<T: AddEntity>(
&mut self,
storages: T,
component: T::Component,
) -> EntityId
pub fn add_entity<T: AddEntity>( &mut self, storages: T, component: T::Component, ) -> EntityId
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));Sourcepub fn bulk_add_entity<T: AddEntity + BulkReserve, I: IntoIterator<Item = T::Component>>(
&mut self,
storages: T,
component: I,
) -> BulkEntityIter<'_> ⓘ
pub fn bulk_add_entity<T: AddEntity + BulkReserve, I: IntoIterator<Item = T::Component>>( &mut self, storages: T, component: I, ) -> BulkEntityIter<'_> ⓘ
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))));Sourcepub fn spawn(&mut self, entity: EntityId) -> bool
pub fn spawn(&mut self, entity: EntityId) -> bool
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§
Source§impl Borrow for EntitiesViewMut<'_>
impl Borrow for EntitiesViewMut<'_>
type View<'a> = EntitiesViewMut<'a>
Source§fn borrow<'a>(
all_storages: &'a AllStorages,
all_borrow: Option<SharedBorrow<'a>>,
_last_run: Option<TrackingTimestamp>,
_current: TrackingTimestamp,
) -> Result<Self::View<'a>, GetStorage>
fn borrow<'a>( all_storages: &'a AllStorages, all_borrow: Option<SharedBorrow<'a>>, _last_run: Option<TrackingTimestamp>, _current: TrackingTimestamp, ) -> Result<Self::View<'a>, GetStorage>
Source§impl<'a> BorrowInfo for EntitiesViewMut<'a>
impl<'a> BorrowInfo for EntitiesViewMut<'a>
Source§fn borrow_info(info: &mut Vec<TypeInfo>)
fn borrow_info(info: &mut Vec<TypeInfo>)
Source§fn enable_tracking(_: &mut Vec<fn(&AllStorages) -> Result<(), GetStorage>>)
fn enable_tracking(_: &mut Vec<fn(&AllStorages) -> Result<(), GetStorage>>)
World where this storage is borrowed.Source§impl Deref for EntitiesViewMut<'_>
impl Deref for EntitiesViewMut<'_>
Source§impl DerefMut for EntitiesViewMut<'_>
impl DerefMut for EntitiesViewMut<'_>
Source§impl<'view, 'de: 'view> Deserialize<'de> for EntitiesViewMut<'view>
Available on crate feature serde1 only.
impl<'view, 'de: 'view> Deserialize<'de> for EntitiesViewMut<'view>
serde1 only.Source§fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Auto Trait Implementations§
impl<'a> Freeze for EntitiesViewMut<'a>
impl<'a> !RefUnwindSafe for EntitiesViewMut<'a>
impl<'a> Send for EntitiesViewMut<'a>
impl<'a> Sync for EntitiesViewMut<'a>
impl<'a> Unpin for EntitiesViewMut<'a>
impl<'a> !UnwindSafe for EntitiesViewMut<'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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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