pub struct SceneEntityMapper<'m> { /* private fields */ }
Expand description
A wrapper for EntityHashMap<Entity>
, augmenting it with the ability to allocate new Entity
references in a destination
world. These newly allocated references are guaranteed to never point to any living entity in that world.
References are allocated by returning increasing generations starting from an internally initialized base
Entity
. After it is finished being used, this entity is despawned and the requisite number of generations reserved.
Implementations§
source§impl<'m> SceneEntityMapper<'m>
impl<'m> SceneEntityMapper<'m>
sourcepub fn get_map(&'m self) -> &'m HashMap<Entity, Entity, EntityHash>
pub fn get_map(&'m self) -> &'m HashMap<Entity, Entity, EntityHash>
Gets a reference to the underlying EntityHashMap<Entity>
.
sourcepub fn get_map_mut(&'m mut self) -> &'m mut HashMap<Entity, Entity, EntityHash>
pub fn get_map_mut(&'m mut self) -> &'m mut HashMap<Entity, Entity, EntityHash>
Gets a mutable reference to the underlying EntityHashMap<Entity>
.
sourcepub fn new(
map: &'m mut HashMap<Entity, Entity, EntityHash>,
world: &mut World,
) -> SceneEntityMapper<'m>
pub fn new( map: &'m mut HashMap<Entity, Entity, EntityHash>, world: &mut World, ) -> SceneEntityMapper<'m>
Creates a new SceneEntityMapper
, spawning a temporary base Entity
in the provided World
sourcepub fn finish(self, world: &mut World)
pub fn finish(self, world: &mut World)
Reserves the allocated references to dead entities within the world. This frees the temporary base
Entity
while reserving extra generations. Because this makes the SceneEntityMapper
unable to
safely allocate any more references, this method takes ownership of self
in order to render it unusable.
sourcepub fn world_scope<R>(
entity_map: &'m mut HashMap<Entity, Entity, EntityHash>,
world: &mut World,
f: impl FnOnce(&mut World, &mut SceneEntityMapper<'m>) -> R,
) -> R
pub fn world_scope<R>( entity_map: &'m mut HashMap<Entity, Entity, EntityHash>, world: &mut World, f: impl FnOnce(&mut World, &mut SceneEntityMapper<'m>) -> R, ) -> R
Creates an SceneEntityMapper
from a provided World
and EntityHashMap<Entity>
, then calls the
provided function with it. This allows one to allocate new entity references in this World
that are
guaranteed to never point at a living entity now or in the future. This functionality is useful for safely
mapping entity identifiers that point at entities outside the source world. The passed function, f
, is called
within the scope of this world. Its return value is then returned from world_scope
as the generic type
parameter R
.
Trait Implementations§
source§impl EntityMapper for SceneEntityMapper<'_>
impl EntityMapper for SceneEntityMapper<'_>
source§fn map_entity(&mut self, entity: Entity) -> Entity
fn map_entity(&mut self, entity: Entity) -> Entity
Returns the corresponding mapped entity or reserves a new dead entity ID in the current world if it is absent.
Auto Trait Implementations§
impl<'m> Freeze for SceneEntityMapper<'m>
impl<'m> RefUnwindSafe for SceneEntityMapper<'m>
impl<'m> Send for SceneEntityMapper<'m>
impl<'m> Sync for SceneEntityMapper<'m>
impl<'m> Unpin for SceneEntityMapper<'m>
impl<'m> !UnwindSafe for SceneEntityMapper<'m>
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for 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